about random again

I have one matrix as follows X = rand(4,10)
I want to generate a matrix from X and in each row a variable should be randomly selected and all possible combination can be used. actually the following code works for a small set like d = rand(4,3) but i have problem when a larger set like above X = rand(4,10) used , please run this and let me know .
[m,n] = size(x);
df = bsxfun(@plus,fullfact(m*ones(1,n)),(0:n-1)*m);
k = randperm(size(df,1));
out = x(df(k(1:min(100,numel(k))),:));

댓글 수: 3

Niki
Niki 2012년 6월 12일
actually I have solved my problem in another way, but I am very interested to see how to amend this function
Walter Roberson
Walter Roberson 2012년 6월 12일
Perhaps you could describe the "problem" ?
Niki
Niki 2012년 6월 12일
Yes,
actually when I generate my matrix like for example follows
X = rand(10,23)
then i get the size of my matrix
[m,n] = size(X);
then I do
df = bsxfun(@plus,fullfact(m*ones(1,n)),(0:n-1)*m);
I will get error as
??? Error using ==> zeros
Maximum variable size allowed by the program is exceeded.
Error in ==> fullfact at 33
design = zeros(ssize,cols,class(levels));

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2012년 6월 12일

0 개 추천

If I calculate correctly, fullfact(m*ones(1,n)) creates m^n rows of output each of width n.
When X = rand(10,23) then you are asking for 10^23 rows each of width 23, and each element takes 8 bytes (double precision), so you are asking for (8*23) * 10^23 bytes of output. That would be about 2^84 bytes. That exceeds the largest variable that can be handled on a 64 bit operating system (2^64 bytes).

댓글 수: 1

Niki
Niki 2012년 6월 12일
so what should I do to prevent such problem?
can you help me ?

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

질문:

2012년 6월 12일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by