交叉表与频率类别matlab

时间:2016-11-07 19:41:04

标签: matlab matrix frequency categories

我有两个矩阵A和B,它们包含分配给类别的整数值。我想创建一个表P,其中P(i,j)= p(A=i&B=j):意味着P(1,1)保持A的元素为类别1且B的相同元素为类别的概率1.另外要明确的是,如果您在行之间总计P,您会找到A矩阵的类别频率,如果您在列之间求P,则可以找到B矩阵的类别频率。

使用for循环很容易执行,但我比较了巨大的矩阵(地图与土地使用类别),并且它非常慢,正如每个for循环实现所期望的那样。

matlab中是否有内置函数或更简单的方法?我搜索了很多但找不到适用于矩阵的东西。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我发现一个解决方案比比较元素A和B的for循环至少快2.5倍。 例如,5个类别:

P=zeros(5)
for i=1:5
    for j=1:5
      P(i,j)= sum(sum((im1==i &im2==j))) /numel(A);
    end
end

如果有更快的方式(内置功能)我将非常高兴。

相关问题