Related to comparing two vectors

1 回表示 (過去 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 件)

カテゴリ

Help Center および File ExchangeWLAN Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by