Filter löschen
Filter löschen

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

1 Ansicht (letzte 30 Tage)
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 Kommentare
Dhananjay Mishra
Dhananjay Mishra am 12 Okt. 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

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Miriam
Miriam am 12 Okt. 2018
Bearbeitet: Miriam am 12 Okt. 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 Kommentare
Dhananjay Mishra
Dhananjay Mishra am 12 Okt. 2018
Now I don't get any error but the answer doesn't matches for both the codes.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by