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

Learn moreOpportunities for recent engineering grads.

Apply TodayTo resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

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?

*No products are associated with this question.*

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