Find the indices of the imaginary element of the matrix

54 views (last 30 days)
Hassan Alkomy on 8 Jun 2021
Answered: Hassan Alkomy on 8 Jun 2021
Suppose I have a Matrix like this:
A=[1 2 3;
4+i 5 6-i;
7 8+i 9]
Now, I want to know if there is a way to find the indecies of the imaginary elements (by this I mean the complex numbers which have imaginary part). I am looking for an answer like that:
A(2,1)
A(2,3)
A(3,2)
or any other form the conveys the indecies information of the imaginary elements.
Thank you so much.

David Hill on 8 Jun 2021
Lidx=find(imag(A)~=0);
2 CommentsShow 1 older commentHide 1 older comment
Hassan Alkomy on 8 Jun 2021
Thank you so much.

Joseph Cheng on 8 Jun 2021
you can do a comparison to the real(A) like
A=[1 2 3;
4+i 5 6-i;
7 8+i 9]
A =
1.0000 + 0.0000i 2.0000 + 0.0000i 3.0000 + 0.0000i 4.0000 + 1.0000i 5.0000 + 0.0000i 6.0000 - 1.0000i 7.0000 + 0.0000i 8.0000 + 1.0000i 9.0000 + 0.0000i
[row col]=find(A~=real(A))
row = 3×1
2 3 2
col = 3×1
1 2 3
then with find you can get the row and column index values of the as real(A)~=A
Hassan Alkomy on 8 Jun 2021
Thank you so much.

Scott MacKenzie on 8 Jun 2021
% test matrix
A=[1 2 3;
4+i 5 6-i;
7 8+i 9]
% identify imaginary elements in A (+1 or -1)
B = imag(A)
% generate column vector of indices of imaginary elements in A
find(B~=0)
Output:
A =
1 + 0i 2 + 0i 3 + 0i
4 + 1i 5 + 0i 6 - 1i
7 + 0i 8 + 1i 9 + 0i
B =
0 0 0
1 0 -1
0 1 0
ans =
2
6
8
Hassan Alkomy on 8 Jun 2021
Thank you so much.

Hassan Alkomy on 8 Jun 2021
Actually, the three solutions by David, Joseph and Scott give what i want. I chose David's answer because it is a one-line answer, but the rest of the solutions gives the same result.
Thank you all.

Categories

Find more on Matrix Indexing in Help Center and File Exchange

R2019a

Community Treasure Hunt

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

Start Hunting!