Matlab基础知识功能独特

时间:2018-02-13 11:38:23

标签: matlab unique

我正在研究函数unique,它看起来很简单,但我不了解某些属性。

我创建了一个矩阵A并尝试分析输出:

A=[5 2 4 5;
   1 1 3 4;
   6 1 2 3]

[C0,IA0,IC0]=unique(A)

[Cr,IAr,ICr]=unique(A,'rows')

[Cf,IAf,ICf]=unique(A,'first')
  1. C0中,输出的逻辑是“创建一个向量,其中有至少出现一次的值”

    但我不知道IA0IC0的含义。我只知道C=A(IA0)A=C(IC0)之间的关系。创建这两个输出只是为了满足这两个关系吗?那么我为什么要对他们的产出感兴趣呢?

  2. Cr('rows'示例)中,输出的逻辑是“给我回原始矩阵A的行,但是按升序排序。另外,如果你找到至少两行或多行重复相同的值和顺序,在Cr输出中只显示一行“

    IAr的逻辑非常直观:“给我回复必须遵循Cr输出的索引来排序行。”所以在我的例子中给了我返回像IAr=[2;1;3]这样的向量。因此,原始矩阵A的第二行必须是Cr输出中的第一行,A矩阵中的第一行必须是Cr中的第二行... < / p>

    但我仍然不理解输出ICr

  3. Cf('first'示例)中,我返回与C0相同的输出。对我来说,如何正确使用这个功能并不是很清楚。

  4. 有人能给我一个关于这个功能如何运作的简单解释吗?

    是否有任何简单的实际例子可以利用这些其他输出?

1 个答案:

答案 0 :(得分:-4)

Matlab是一个通用工具。所以问&#34;为什么&#34;有些函数只是因为某些原因可能对某人有用而提供额外的输出很难回答。

  1. IA0给出了unique可能选择的最后元素的索引。 IC0包含仅使用唯一元素复制A的索引。它们为什么存在?您不仅可以对唯一值感兴趣,还可以在A中找到它们的位置。

  2. 您误解了rows的工作原理。它只是将矩阵的行视为原子并返回唯一的行。要更好地了解其工作原理,请在致电A(3,:) = A(2,:)之前运行unique。然后,IA0IC0背后的想法与之前的情况相同,但现在除了行。

  3. first选项仅更改Matlab选择IA0索引的方式。同样,背后的原因是Matlab是一个通用工具。您可能有兴趣找到每个值的最新重复出现或在第一个值。这取决于你想做什么。