필터 지우기
필터 지우기

about random again

조회 수: 1 (최근 30일)
Niki
Niki 2012년 6월 12일
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
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일
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 ?

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

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by