我想創建一個隨機矩陣,以便每列的總和爲1,並且每行按升序排列。我想要這個矩陣來解決以下問題:我有一個單元陣列P {k}(r,a),它的每個單元都是一個隨機矩陣,並且必須具有以下條件:如何在matlab中創建一個隨機矩陣,使每列的總和等於1,並且其行按升序排列?
1)在陣列的每個單元的矩陣的每一列應等於1個
∀k,一個Σp {ķ}(R,A)= 1
2)所述陣列中的矩陣的每一列之間的(r,a)> p {k}(r,a)
我寫了這段代碼,但沒有提供第一個條件離子:
clear all
close all
clc
r=6
a=6
k=3
p=cell(k,1)
for n=1:k
q=rand(r,a);
s=sum(q);
for i=1:a
q(:,i)=q(:,i)./s(i);
end
q
s=sum(q)
p{n}=q(:,:)
end
for i=1:a
m=zeros(r,k);
for n=1:k
m(:,n)=p{n}(:,i) ;
end
for j=1:r
m(j,:)=sort(m(j,:));
end
sm=sum(m);
for n=1:k
p{n}(:,i)=m(:,n);
end
p{n}(:,i)=p{n}(:,i)./s(:,i) ;
end
p{1}(:,:)
sa=sum(p{1}(:,:))
p{2}(:,:)
sa=sum(p{2}(:,:))
p{3}(:,:)
sa=sum(p{3}(:,:))
你的意思是「行按升序排列」是什麼意思?你如何定義行的順序? –
如果您得到的答案不符合您的需求,或許您的問題需要澄清。 [mcve]會有幫助。 – beaker
你到目前爲止嘗試過什麼? – m7913d