Related to comparing two vectors

3 ビュー (過去 30 日間)
chaaru datta
chaaru datta 2023 年 10 月 23 日
回答済み: Fabio Freschi 2023 年 10 月 23 日
Hello all, In my work I came across a situation where I have two vectors of dimension 8 X 1 each.
These vectors have all zero values except at any two rows.
My query is how to compare the non-zero positions of these two matrices in MATLAB.
Any help in this regard will be highly appreciated.
  2 件のコメント
NAVNEET NAYAN
NAVNEET NAYAN 2023 年 10 月 23 日
From your query, it appears that you want to find the location of non-zero values from both vectors and then compare it (correct me if I am wrong). Can you please explain what kind of comparison do you want?
Dyuman Joshi
Dyuman Joshi 2023 年 10 月 23 日

サインインしてコメントする。

採用された回答

Fabio Freschi
Fabio Freschi 2023 年 10 月 23 日
You can compare the two complete vectors (you also compare zeros, but who cares?)
% data
v1 = [0 0 0 4 5 0 0 0].';
v2 = [0 0 0 4 6 0 0 0].';
v3 = [0 0 0 4 5 0 0 0].';
% engine
v1eqv2 = isequal(v1,v2)
v1eqv2 = logical
0
v1eqv3 = isequal(v1,v3)
v1eqv3 = logical
1
or you can compare nonzero indices and values
% data
v1 = [0 0 0 4 5 0 0 0].';
v2 = [0 0 0 4 6 0 0 0].';
v3 = [0 0 0 4 5 0 0 0].';
% find nonzeros
[idx1,val1] = find(v1);
[idx2,val2] = find(v2);
[idx3,val3] = find(v2);
% engine
v1eqv2 = isequal(idx1,idx2) && isequal(val1,val2)
v1eqv2 = logical
1
v1eqv3 = isequal(idx1,idx3) && isequal(val1,val3)
v1eqv3 = logical
1
If you only want to check if the nonzero positions are the same
% data
v1 = [0 0 0 4 5 0 0 0].';
v2 = [0 0 0 4 6 0 0 0].';
% find nonzeros
idx1 = find(v1);
idx2 = find(v2);
% engine
v1eqv2pos = isequal(idx1,idx2)
v1eqv2pos = logical
1

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by