2012-10-10 77 views
0

我正在尋找使用隨機值的輸出來選擇將被輸入到一個稱爲Matrix1的新矩陣的列。基於隨機值輸出的矩陣輸入(Matlab)

我有類似如下:

a = [1 2 3 4; 5 3 6 2; 9 8 1 4]; 
n = length(a(1,:))-1; 
RandomValue = round(rand()*n+1); 
Matrix1 = []; 
L=3; 
for i=n:-1:1 
    RandomValue 
    if RandomValue < L 
     Matrix1 = [a(:,i) Matrix1]; 
     a(:, i) = []; 
     Matrix1 
    end 
end 

例如如果隨機值是2,我想將[2; 3; 8]放入Matrix1(根據第一行的值)。我如何修改代碼,所以不是我是隨機數字?

+0

修復您的格式。我會自己做,但我真的不知道它應該如何。 – keyser

+2

你在這裏試圖做什麼?這個程序的結果是什麼?你只是想排列你矩陣的列嗎? – angainor

+0

我正在做的是取a中的輸入值並根據第一行的RandomValue輸出到Matrix1。 – Kelly

回答

0

我不明白你到底,但我看不出爲什麼

Matrix1 = [a(:,round(rand()*n+1)) Matrix1] 

一些變種是不恰當的。比舍入rand更好的方式是使用randi函數返回一個僞隨機整數,也許

Matrix1 = [a(:,randi(n)) Matrix1] 

但是,如果像@angainor曾建議,你想你的置換輸入矩陣的列,那麼請看permute函數。

+0

謝謝!這似乎工作,但我在輸出中得到一些重複的列。我會再看看它... – Kelly