How to skip elements of matrix in a loop?

3 Ansichten (letzte 30 Tage)
brandon fries
brandon fries am 28 Nov. 2018
Beantwortet: Image Analyst am 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

Antworten (1)

Image Analyst
Image Analyst am 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.

Kategorien

Mehr zu Structures 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