2012-10-10 78 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