【问题标题】:How can I determine the relative frequency of a string value in a MATLAB vector? [duplicate]如何确定 MATLAB 向量中字符串值的相对频率? [复制]
【发布时间】:2013-07-01 15:42:10
【问题描述】:

如何确定字符串值在 MATLAB 向量中的相对频率?

vector = { 'aa', 'f', 'aa', 'f', 'f', 'h', 'k', 'k' };

什么函数会返回每个唯一元素的出现次数?

【问题讨论】:

  • 你的意思可能是vector = { 'aa', 'f', 'aa', 'f', 'f', 'h', 'k', 'k' };
  • 制表(向量)

标签: matlab


【解决方案1】:

here 已经回答了一个类似的问题,它需要来自 FEX 的文件。为此,您可以使用 MATLAB 中的内置函数。说,

vector = { 'aa', 'f', 'aa', 'f', 'f', 'h', 'k', 'k' };

可以使用

[u,~,n] = unique(vector(:));
B = accumarray(n, 1, [], @sum);
bar(B)
set(gca,'XTickLabel',u)

产生

编辑:借用Eitan T's comment可以使用histc而不是accumarray,即

B = histc(n,1:max(n));

【讨论】:

  • +1:我没有注意到这两个问题都没有提出原生解决方案。使用histc 而不是accumarray 可能会更好,它更直观。
  • @EitanT 好点,但我将其添加到答案中。
  • ~ 中的[u,~,n] = unique(vector(:)); 代表什么???
  • 这意味着我们对第二个输出参数不感兴趣,所以它没有分配给任何变量。它是必需的,因为我们想要访问第三个输出参数。
  • 你的答案我不清楚!你介意解释一下吗?我回顾了你提到的那个答案,但是因为我使用的是第 7 版的 matlab,所以没有命令“countmember”!你知道我用什么命令代替它吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 2019-12-08
  • 1970-01-01
相关资源
最近更新 更多