如何知道Scilab中的一个数组中是否有不同的元素?
我的目标是检查一个数组中是否存在放错位置的对象。 例如,数组是如何知道Scilab中的一个数组中是否有不同的元素?,scilab,Scilab,我的目标是检查一个数组中是否存在放错位置的对象。 例如,数组是 2. 2. 2. 2. 2. 1. 3. 1. 3. 3. 3. 1. 3. 1. 1. 1. 1. 我想知道前5个元素,6-13和14-17是否相同 这样做的目的是识别集群解决方案中放置错误的元素 我已经尝试了前5个元素 ISet=5 IVer=7 IVir=5 for i=1:ISet if(
2.
2.
2.
2.
2.
1.
3.
1.
3.
3.
3.
1.
3.
1.
1.
1.
1.
我想知道前5个元素,6-13和14-17是否相同
这样做的目的是识别集群解决方案中放置错误的元素
我已经尝试了前5个元素
ISet=5
IVer=7
IVir=5
for i=1:ISet
if(isequal(FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2))==%f)
numMisp=numMisp+1
mprintf("Set misp: %i",numMisp)
end
end
对于接下来的6到13个元素
for i=ISet+1:IVer+ISet-1
if(isequal(FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2))==%f)
mprintf("%i %i Ver misp: %i\n",FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2),i)
numMisp=numMisp+1
end
end
对于接下来的14到17个元素
for i=IVer+ISet:IVer+IVir-1
if(isequal(FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2))==%f)
mprintf("%i %i Ver misp: %i\n",FIRSTMIN(i,1,2),FIRSTMIN(i+1,1,2),i)
numMisp=numMisp+1
mprintf("Vir misp: %i",i)
end
end
您可以为此使用unique。例如,以下测试检查前五个元素是否相同
x=[2 2 2 2 2 1 3 1 3 3 3 1 3 1 1 1 1];
if length(unique(x(1:5))) == 1
//
end
通过将1:5替换为6:13,然后再替换为14:17,可以对其他集群执行相同的操作。它只获取唯一值,而不获取不同值的出现情况使用完整语法[u,k]=uniquex并阅读有关此命令的Scilab帮助页。