Matlab:使用“for”循环中的先前矩阵来创建新矩阵

时间:2013-04-13 11:09:23

标签: matlab matrix

我已经编写了下面的代码来确定在矩阵X的COLUMNS内发生颜色的概率。 索引号0-7表示这些颜色。

我遇到的问题是 - 我想在第1行中获得“颜色0的概率”,然后在第2行中获得“颜色1的概率”,依此类推,在新的矩阵中。我在Google上进行了广泛的搜索和帮助文档,但仍然不知道。

[rows, cols] = size(X);

for index = 0:7   
    B = (X == index);
    colour_in_columns = sum(B,1);
    prob_colour_in_columns = (colour_in_columns ./rows);
    index = index + 1;

end

4 个答案:

答案 0 :(得分:0)

基本上(我希望这有效)你将每个prob_colour_in_columns添加到自身

newmatrix=[newmatrix;prob_colour_in_columns];

答案 1 :(得分:0)

index循环内“手动”修改for变量并不像您想象的那样有效。每次循环体再次执行时,Matlab将用你给出的列表0:7中的下一个值覆盖你的index。可能是循环体中的最后一行是错误的,您可能想要将其删除。

答案 2 :(得分:0)

您可以用类似的方式确定颜色在矩阵X行内发生的概率:假设

X=[1 2 3 4;
   5 1 1 0;
   7 7 7 7;
   0 7 6 6]

[rows, cols] = size(X);

for index = 0:7   
    B = (X == index);
    colour_in_rows = sum(B,2);
    prob_colour_in_rows = (colour_in_columns ./cols);
end

答案 3 :(得分:0)

你可以简单地使用单行:

% Suppose your matrix is 3x3
X = randi([0,7],3);

out = histc(X,0:7,2)./size(X,2)

out(1,:)中,您将在X的第1行中出现颜色0到7的概率。 在out(2,:)中,您将在X的第2行中出现颜色0到7的概率,等等......