交叉 - Table 与类别 matlab 的频率
Cross - Table with frequency of categories matlab
我有两个矩阵 A 和 B,它们包含分配给类别的整数值。我想创建一个 table P
where P(i,j)= p(A=i&B=j)
: 意思是 P(1,1)
持有 A 的元素属于类别 1 和 [=14= 的相同元素的概率] 为第 1 类。另外要明确的是,如果对行求和 P
,则可以找到 A 矩阵的类别频率,如果对 P 对列求和,则可以找到 B 矩阵的类别频率。
使用 for 循环很容易执行,但我比较了巨大的矩阵(带有土地使用类别的地图)并且它非常慢,正如每个 for 循环实施所预期的那样。
matlab 中是否有内置函数或更简单的方法?我搜索了很多但找不到适用于矩阵的东西。提前致谢!
我找到了一个比按元素比较 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
如果有更快的方法(内置函数)我会很高兴。
我有两个矩阵 A 和 B,它们包含分配给类别的整数值。我想创建一个 table P
where P(i,j)= p(A=i&B=j)
: 意思是 P(1,1)
持有 A 的元素属于类别 1 和 [=14= 的相同元素的概率] 为第 1 类。另外要明确的是,如果对行求和 P
,则可以找到 A 矩阵的类别频率,如果对 P 对列求和,则可以找到 B 矩阵的类别频率。
使用 for 循环很容易执行,但我比较了巨大的矩阵(带有土地使用类别的地图)并且它非常慢,正如每个 for 循环实施所预期的那样。
matlab 中是否有内置函数或更简单的方法?我搜索了很多但找不到适用于矩阵的东西。提前致谢!
我找到了一个比按元素比较 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
如果有更快的方法(内置函数)我会很高兴。