![]() |
1
12
对于r2015a,这个问题最终有了一个简单的答案(参见
my other answer to this question
有关详细信息)。对于r2015a之前的版本,有这样一个内置(未记录的)功能:
使用以下语法调用函数:
数据数组
输出
示例,1D数据 :
合并类型:
示例,二维数据 :
机器精度特有的所有二维点:
基于第二尺寸公差合并:
基于第一个尺寸公差合并:
基于两个维度合并:
|
![]() |
2
11
这是个难题。我甚至会说这是不可能解决的,因为我称之为及物性问题。假设我们在一个集合中有三个元素{a,b,c}。我将定义一个简单的函数issimilarto,这样issimilarto(a,b)将返回一个真实的结果,如果这两个输入在彼此指定的公差范围内。(注意,我在这里所说的每件事在一维和多维中都是有意义的。)因此,如果已知两个数字彼此“相似”,那么我们将选择将它们组合在一起。 所以假设我们有值{a,b,c},这样issimilarto(a,b)是真的,issimilarto(b,c)也是真的。即使Issimilarto(A,C)是错误的,我们是否应该决定将这三者组合在一起? 更糟的是,移动到二维。从围绕圆周长等距分布的K点开始。假设选择公差时,任何点都在其相邻点的指定公差范围内,但不在任何其他点的指定公差范围内。您将如何选择解决设置中哪些点是“唯一的”? 我认为这个不及物性的问题使得分组问题不可能解决,至少不能完美地解决,当然也不能以任何有效的方式解决。或许可以尝试基于k-means聚合风格的方法。但这将是相当低效的,同样,这样的方法通常需要事先知道要查找的组的数量。 话虽如此,我还是会提出一个折衷的方案,有时可以在一定范围内奏效。诀窍就在 Consolidator ,在Matlab中央文件交换中找到。我的方法是有效地将输入舍入到指定的公差内。这样做之后,unique和accumarray的结合允许高效地进行聚合,即使是对于一个或多个维度中的大型数据集也是如此。 当公差足够大时,这是一种合理的方法,当多个数据块属于一起时,它们将被舍入到相同的值,舍入步骤偶尔会产生错误。 |
![]() |
3
7
截至R2015A
,最后有一个函数来执行此操作,
语法很简单:
正如语义一样:
它也可以操作”
但是关于解的唯一性有一个重要的注意事项:
还有一个新功能
|
![]() |
4
5
我不知道有这样的功能。一个棘手的问题是,如果你的公差是,比如1e-10,并且你有一个值在9e-11处等距分布的向量,那么第一个和第三个条目是不一样的,但是第一个和第二个是一样的,第二个和第三个是一样的,那么有多少个“uniques”? 解决这个问题的一种方法是将值舍入到所需的精度,然后在该精度上运行unique。你可以用round2( http://www.mathworks.com/matlabcentral/fileexchange/4261-round2 ,或使用以下简单方法:
也可以使用hist命令执行此操作,只要精度不太高:
|
![]() |
5
4
我以前遇到过这个问题。诀窍是首先对数据进行排序,然后使用diff函数查找每个项之间的差异。然后比较一下,当差异小于你的容忍度时。 这是我使用的代码:
这不关“漂流”的事…所以0:0.00001:100实际上会返回一个唯一的值。 如果你想要一些可以处理“漂流”的东西,那么我会使用histc,但是你需要对你愿意拥有的物品做一些粗略的猜测。
顺便说一句:我是在一个远离Matlab的文本编辑器中写的,所以可能会有一些愚蠢的错别字或者一个错误就错了。 希望能帮上忙 |
![]() |
6
0
这很难定义,假设你有一个1的公差。
那么结果会是什么
当有多个列时,定义可能会变得更具挑战性。 但是,如果您主要担心舍入问题,则可以通过以下两种方法之一解决大部分问题:
第一种方法的弱点是0.499999999和0.500000000可能不被视为重复。而第二种方法的缺点是输入顺序很重要。 |
![]() |
7
0
前几天我被一个 MATLAB 2010 ,所以,没有round(x,n),没有mergesimpts(至少我不能让它工作),所以,一个简单的解决方案(至少对我的数据有效):
使用
其他公差:
|
![]() |
Y.C. · 以不同颜色打印x轴上方的y值 3 年前 |
![]() |
dd24 · 在MATLAB中逐部分执行python程序 3 年前 |
![]() |
fateme · MATLAB,神经网络 3 年前 |
![]() |
Marta · 使用*时出错-内部尺寸矩阵必须一致 7 年前 |
![]() |
Morpheus · x*x^T的Matlab符号计算 7 年前 |
![]() |
Lawa · 如果列中的一个元素等于零,则将整列设为零 7 年前 |