Write Similar Expressions in Arrayfun

1 visualización (últimos 30 días)
MarshallSc
MarshallSc el 3 de En. de 2022
Comentada: MarshallSc el 3 de En. de 2022
Is there a concise way to write these 4 expressions so that I don't have to write all of them seperately mayble in a for loop?
n= numel(X);
r_x=1./X; % (X, Y , Z , R are square matrices)
t_x = @(x) sum((x-r_x)./(x+r_x),'all')/n;
x = arrayfun(t_x,r_x);
r_y=1./Y;
t_y = @(x) sum((x-r__y)./(x+r_y),'all')/n;
y = arrayfun(t_y,r_y);
r_z=1./Z;
t_z = @(x) sum((x-r_z)./(x+r_z),'all')/n;
z = arrayfun(t_z,r_z);
r_r=1./R;
t_r = @(x) sum((x-r_r)./(x+r_r),'all')/n;
r = arrayfun(t_r,r_r);
  2 comentarios
Matt J
Matt J el 3 de En. de 2022
How big are X,Y,Z, and R?
MarshallSc
MarshallSc el 3 de En. de 2022
100 * 100. I have 20 matrices that I need to perform this operation on.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 3 de En. de 2022
Editada: Matt J el 3 de En. de 2022
n=numel(X);
r=1./[X(:),Y(:),Z(:),R(:)].';
rt=reshape(r,4,1,[]);
out= squeeze( sum( (rt-r)./(rt+r) ,2)/n ).';
out=num2cell( reshape( out , [size(X),4] ) ,[1,2]);
[x,y,z,r]=deal(out{:});
  3 comentarios
Matt J
Matt J el 3 de En. de 2022
Sorry, try it now.
MarshallSc
MarshallSc el 3 de En. de 2022
Thanks Matt!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing 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