Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Generating a "special" probability random matrix in efficient way

Asked by nedo nodo on 30 Nov 2012

Hi,

I would to generate a probability random matrix with two constraints: the first is that the sum of the values of the row must be equal to 1 and the second is that one element of each row has to be a value greater than 0.5. I have written this:

if true
  for l=1:n
  while (nnz(random_data(l,:)) < d)
      m=randi(d,1,1);
      if (random_data(l,m)==0)
          row_sum=sum(random_data(l,:));
          if(row_sum == 0)
              random_data(l,m)=0.5+0.5*rand(1,1);
          else
              if(nnz(random_data(l,:))==(d-1))
                  random_data(l,m)=1-row_sum;
              else
                  random_data(l,m)=(1-row_sum)*rand(1,1);
              end
          end
      end
  end
end
end
It is very inefficient. Can you help me?

0 Comments

nedo nodo

Products

No products are associated with this question.

1 Answer

Answer by Azzi Abdelmalek on 30 Nov 2012
Edited by Azzi Abdelmalek on 30 Nov 2012

try this

n=10,m=12;
x=rand(n,m)/m;
[~,id1]=max(x');
id2=m+1-id1;
for k=1:n
  x(k,id1(k))=0.5;
  x(k,id2(k))=1-sum(x(k,:))+x(k,id2(k))
end

0 Comments

Azzi Abdelmalek

Contact us