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