【问题标题】:Normalize decimals values to integer number (uniquely) in matlab在matlab中将小数值标准化为整数(唯一)
【发布时间】:2017-10-02 08:31:10
【问题描述】:

有什么办法吗?假设我有A=[0.1 0.2 0.3 0.4],然后在标准化之后,A_norm=[1 2 3 4],基于每个值的“重要性”,这意味着 0.4 将是最大的(4 分配),0.1 将是最小的(1 分配)。

您可能会建议只使用A_norm=A*10,但请注意,该数字可以是最多 10 个有效数字的任何数字。也不要使用 floor ceilround 之类的命令四舍五入到最接近的整数。

谢谢!

【问题讨论】:

  • 如果A中的值重复,你想要什么结果?
  • 如果A存在重复值,则'重要性值'应该相同

标签: matlab normalization


【解决方案1】:

您可以只使用uniquethird output,这是已排序A索引。请注意,如果您使用 'stable' 选项,它将是 unsorted A 的索引,所以不要:

A=[0.1 0.2 0.3 0.4 0.005 0.4];
[~,~,A_norm] = unique(A);
A_norm = A_norm.'

A_norm =

     2     3     4     5     1     5

【讨论】:

  • 使用与问题中相同的名称并解释您的解决方案的工作原理可能很有用。
  • 你为什么用.'而不是'
  • 感谢 cmets @m7913d,我相应地编辑了我的答案。 .' 是转置运算符(不像 ' 是复共轭转置运算符)。我很少使用它,我知道它只是这里的索引(必须是实数),但这里的其他人对此发表了评论,所以我采用了.'
猜你喜欢
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
相关资源
最近更新 更多