0

我编写了下面的代码来确定矩阵 X 的列内出现颜色的概率。索引号 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

4 回答 4

0

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

newmatrix=[newmatrix;prob_colour_in_columns];
于 2013-04-13T11:27:03.847 回答
0

您可以简单地使用单线:

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

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

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

于 2013-04-13T15:26:25.093 回答
0

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

于 2013-04-13T12:18:24.067 回答
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
于 2013-04-13T12:25:42.313 回答