Performing an Operation on a Matrix Using Complex Numbers

1 visualización (últimos 30 días)
MarshallSc
MarshallSc el 7 de En. de 2022
Editada: MarshallSc el 7 de En. de 2022
I have a matrix with the operation perfomed as:
a = rand(10,10);
a_x = @(x) sum((x-a)./(x+a),'all');
aa = arrayfun(a_x,a);
I want the operation for each pair to be performed in complex format. For example for one pair of the matrix ( a(1) & a(2) ) points, it will be like:
complex(a(1),-a(2)) / complex(a(1),a(2)); %% a(1) - a(2)i / a(1) + a(2)i
Which will give me:
ans =
-0.0313 - 0.9995i
I want this operation (sum of all the relations for each point) to be performed for all the matrix components (may original matrix is 81*81).
  2 comentarios
Walter Roberson
Walter Roberson el 7 de En. de 2022
To confirm, you want
complex(a(I,J),-a(K,L)) / complex(a(I,J),a(K,L));
for all I, J, and K, L? Including or excluding K,L = I,J ?
So you want (81 x 81) x (81 x 81) size output ?
MarshallSc
MarshallSc el 7 de En. de 2022
Yessir, including K,L = I,J, since I need the sum for each point, they need to be included.
This will give me a (81 x 81) in complex form for the aa (summing every relation for each point, same as):
a_x = @(x) sum((x-a)./(x+a),'all');
The difference is the subtraction in the nominator and summation in the denominator will be like:
a_x = @(x) sum ((x - ai)./(x + ai), 'all'): % obviously this is not correct, just wanted to show what I mean

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 7 de En. de 2022
Editada: Matt J el 7 de En. de 2022
sz=size(a);
C=(a(:)-1i*a(:).');
result=reshape(C./conj(C) , [sz,sz]);
  4 comentarios
MarshallSc
MarshallSc el 7 de En. de 2022
Editada: MarshallSc el 7 de En. de 2022
The "result" should be transformed into a 10 x 10 complex double that each summation for each component is written in this way:
a(1) = a(1) - a(1)i / a(1) + a(1)i + a(1) - a(2)i / a(1) + a(2)i + ...
a(1) - a(3)i / a(1) + a(3)i + . . . + a(1) - a(n)i / a(1) + a(n)i
a(2) = a(2) - a(1)i / a(2) + a(1)i + a(2) - a(2)i / a(2) + a(2)i + ...
a(2) - a(3)i / a(2) + a(3)i + . . . + a(2) - a(n)i / a(2) + a(n)i
.
.
.
a(n) = a(n) - a(1)i / a(n) + a(1)i + a(n) - a(2)i / a(n) + a(2)i + ...
a(n) - a(3)i / a(n) + a(3)i + . . . + a(n) - a(n)i / a(n) + a(n)i
Matt J
Matt J el 7 de En. de 2022
Editada: Matt J el 7 de En. de 2022
That would just be,
sum(result,[3,4])

Iniciar sesión para comentar.

Más respuestas (1)

Matt J
Matt J el 7 de En. de 2022
sz=size(a);
C=2*atan(a(:),a(:).');
result=reshape( exp(1j*C), [sz,sz]);

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by