Vector 倍频程-比较矢量(逐元素)
如何比较两个长度相等的向量?我想得到不同的元素数(在两个向量中的位置相同)Vector 倍频程-比较矢量(逐元素),vector,octave,Vector,Octave,如何比较两个长度相等的向量?我想得到不同的元素数(在两个向量中的位置相同) Example: x=[1 0 0 1 1] y=[1 0 1 1 0] result should be 2 since 3rd and 5th element of both vectors differ 一种可能的解决办法: x==y将返回长度向量length(x)(或者length(y),因为x和y是相同的长度)和1其中x(i)==y(i)和0其中x(i)~=y(i): 所以你需要做的就是把x==y的元素求和,
Example:
x=[1 0 0 1 1]
y=[1 0 1 1 0]
result should be 2 since 3rd and 5th element of both vectors differ
一种可能的解决办法:
x==y
将返回长度向量length(x)
(或者length(y)
,因为x
和y
是相同的长度)和1
其中x(i)==y(i)
和0
其中x(i)~=y(i)
:
所以你需要做的就是把x==y
的元素求和,然后减去它,得到length(x)
Arnaud将两个矩阵(/向量)与-
它返回0和1的矩阵z
。最后计算其中的零数:
sum(z == 0); % find total non matching elements
求和(ne(x,y))%查找所有不同的元素
给出2为了避免矩阵出现问题,我建议用
numel
和nnz
替换length
和sum
。我特别不喜欢length
,因为它对最大维度的长度有一个奇怪的定义。虽然OP确实指定x
和y
为向量,而不是矩阵,但这一点很好。
>> length(x)-sum(x==y)
ans = 2
z = eq(x, y) % returns 1 for match and 0 for mismatch
sum(z == 0); % find total non matching elements