2013-05-01 1 views
1

Как сравнить 2 вектора равной длины - я хочу, чтобы количество элементов (которые имеют одинаковое положение в обоих векторах), которые отличаются.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 

ответ

2

Одно из возможных решений:

x==y возвращает вектор длины length(x) (или length(y) так x и y имеют одинаковую длину) с 1 где x(i)==y(i) и 0, где x(i)~=y(i):

>> x==y 
ans = 

    1 1 0 1 0 

Итак, все, что вам нужно сделать, это суммировать элементы x==y и su btract что length(x)

>> length(x)-sum(x==y) 
ans = 2 

Arnaud

+0

Чтобы избежать проблем в случае матрицы, я бы предложил заменить 'length' и' sum' с '' numel' и nnz'. Мне особенно не нравится 'length', поскольку у него есть странное определение длины самого большого измерения. – carandraug

+0

Хорошая точка, хотя ОП указывал 'x' и' y' как векторы, а не матрицы. – am304