我已经编写了下面的代码来确定在矩阵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
答案 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的概率,等等......