2017-05-04 318 views
1

任何方式来做到这一点?假设我有A=[0.1 0.2 0.3 0.4],那么在标准化后,A_norm=[1 2 3 4]基于每个值的“重要性”,这意味着0.4将是最大的(4个分配的)并且0.1将是最少的(1个分配的)。在matlab中将小数值标准化为整数(唯一)

您可能会建议只使用A_norm=A*10,但请注意,该数字可以是任意数字,最多可包含10位以上的有效数字。也不要使用像floorceilround这样的命令四舍五入到最接近的整数。

谢谢!

+0

这样就可以使你想在'A'重复值的情况下? – m7913d

+0

如果存在A的重复值,则'重要性值'应该相同 –

回答

3

您可以只使用uniquethird output,这是排序的A索引。请注意,如果你使用'stable'选项这将是未排序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 
+0

使用与问题中相同的名称并解释您的解决方案的工作方式可能很有用。 – m7913d

+0

为什么你用'.''代替'''? – m7913d

+1

感谢评论@ m7913d,我相应地编辑了我的答案。 '。'是转置运算符(不同于'',它是复共轭转置运算符)。我很少使用它,我知道它只是索引(它必须是实数),但其他人在这里评论了它,所以我通过了'。''。 – user2999345