Effacer les filtres
Effacer les filtres

How do I replace "for" loops by matrix multiplication? I am getting confused because of 4 "for" loops. Any suggestions?

1 vue (au cours des 30 derniers jours)
Hello, the code is as follows.
value = zeros();
E2 = zeros();
dxdy = 1;
x1=1;y1=1;u1=1;v1=1;
for u = -1:1:1
for v = -1:1:1
for x = -1:1:1
for y = -1:1:1
value(x1,y1) = input_data(x1,y1)*exp( ( -1i*k*(((u-x)^2) + (v-y)^2)) / (2*0.2))*(dxdy);
y1 = y1+1;
end
x1 = x1+1;
y1 = 1;
end
S_rows = sum(value,2); %Adding components of matrix "value"
S_complete = sum(S_rows);
E2(u1,v1) = S_complete;
x1 = 1;
v1 = v1 + 1;
end
u1 = u1+1;
v1 = 1;
end
disp(E2)
  4 commentaires
Dhananjay Mishra
Dhananjay Mishra le 12 Oct 2018
If you see the program the values of u1 and v1 is reset everytime. Hence the input is 3*3. And the output is also 3*3

Connectez-vous pour commenter.

Réponses (1)

Miriam
Miriam le 12 Oct 2018
Modifié(e) : Miriam le 12 Oct 2018
dxdy = 1;
[x,y,u,v] = ndgrid(-1:1);
value = input_data.*exp((-1i*k*(((u-x).^2) + (v-y).^2))/(2*0.2))*(dxdy);
S_rows = sum(value,2);
S_complete = sum(S_rows);
E2 = squeeze(S_complete);
disp(E2)
  8 commentaires
Dhananjay Mishra
Dhananjay Mishra le 12 Oct 2018
Now I don't get any error but the answer doesn't matches for both the codes.
Miriam
Miriam le 12 Oct 2018
I'm not sure what to tell you then. It works fine for me.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by