Azzera filtri
Azzera filtri

How to skip elements of matrix in a loop?

1 visualizzazione (ultimi 30 giorni)
brandon fries
brandon fries il 28 Nov 2018
Risposto: Image Analyst il 28 Nov 2018
Hi
If I have a matrix defined as:
V = zeros(20,20);
%sides at 1,-1
V(1:21,1) = 1;
V(1:21,21) = -1;
V(1:21,2:20) = 2;
%zero potential triangle
V(14,8:13) = 0;
V(13,9:13) = 0;
V(12,10:13) = 0;
V(11,11:13) = 0;
V(10,12:13) = 0;
V(9,13:13) = 0;
(two metal plates with v=1 and v=-1 and a triangle in the middle v=0)
I am implementing the jacobi method by:
for j=2:column_size-1;
for i=2:row_size-1;
if V(i,j)~=1 & V(i,j)~=-1 & V(i,j)~=0 %update
V_new(i,j) = (V(i-1,j)+V(i+1,j)+V(i,j-1)+V(i,j+1))/4;
delta_V_new = delta_V_new+abs(V_new(i,j)-V(i,j));
else
V_new(i,j) = V(i,j); %keep initial conditions
end;
end;
end;
The loop is not converging properly. I want to keep the same boundary conditions..is there a way to skip the elements of the triangle in the middle without using the if statement? I am fine with using the if statementfor the 1 and -1
Thanks

Risposte (1)

Image Analyst
Image Analyst il 28 Nov 2018
Just make up a mask with true or false where you want it to process, or skip. Then
for j=2:column_size-1;
for i=2:row_size-1;
if ~mask(i, j)
% Mask is false here, so skip rest of the loop.
continue;
end
% Else mask is true, so do the rest of the loop.
end
end
The "false" region(s) shape mask can be whatever shape you want, but the overall size should be row_size by column_size.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by