根据每个元素在矩阵中出现的频率,创建权重矩阵的最简单方法是什么?

Jes*_*pin 4 matlab matrix

这是输入矩阵

 7     9     6
 8     7     9
 7     6     7
Run Code Online (Sandbox Code Playgroud)

基于它们在矩阵中出现的频率(注意:这些值是出于解释目的.我没有提前预先计算它们.这就是为什么我问这个问题)

 number frequency
 6      2
 7      4
 8      1
 9      2
Run Code Online (Sandbox Code Playgroud)

和我期望的输出

 4     2     2
 1     4     2
 4     2     4
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法吗?

Chr*_*lor 5

这是一个三线解决方案.首先准备输入:

X = [7 9 6;8 7 9;7 6 7];
Run Code Online (Sandbox Code Playgroud)

现在做:

[a m n] = unique(X);

b = hist(X(:),a);

c = reshape(b(n),size(X));
Run Code Online (Sandbox Code Playgroud)

其中给出了以下值c:

4     2     2
1     4     2
4     2     4
Run Code Online (Sandbox Code Playgroud)

如果您还想要频率矩阵,可以使用以下代码获取:

[a b']
Run Code Online (Sandbox Code Playgroud)