Hi everyone
I'm tryng to vectorize the folowing piece of code:
n=30;
d=3;
a=1;
b=2;
cell=3;
for ki = 2:n-1
for kj = 2:n-1
M((cell-1)*n^2+(ki-1)*n+kj,(cell-1)*n^2+(ki-1)*n+kj-1) = 1/d^2;
M((cell-1)*n^2+(ki-1)*n+kj,(cell-1)*n^2+(ki-1)*n+kj) = -4/d^2-a;
M((cell-1)*n^2+(ki-1)*n+kj,(cell-1)*n^2+(ki-1)*n+kj+1) = 1/d^2;
M((cell-1)*n^2+(ki-1)*n+kj,(cell-1)*n^2+(ki-1)*n+kj-n) = 1/d^2;
M((cell-1)*n^2+(ki-1)*n+kj,(cell-1)*n^2+(ki-1)*n+kj+n) = 1/d^2;
C((cell-1)*n^2+(ki-1)*n+kj,1) = b;
end
end
How can I do it? I will appreciate any help! Thanks!

댓글 수: 3

Walter Roberson
Walter Roberson 2021년 5월 10일
What are we to presume about the datatype and size of cell ? It does not appear to be a cell array.
Walter Roberson
Walter Roberson 2021년 5월 10일
(cell-1)*n^2+(ki-1)*n+kj
You are faking 4 dimensional indexing. You should switch to actual 4D indexing. reshape() before and after if you need to.
Walter Roberson
Walter Roberson 2021년 5월 13일
If you feel that your post is unclear, then since you are the one who wrote it, you should clarify it.

댓글을 달려면 로그인하십시오.

답변 (1개)

Bob Thompson
Bob Thompson 2021년 5월 10일

0 개 추천

Does this work? I haven't been able to test it.
M((cell-1)*n^2+(1:n-2)*n+(2:n-1),(cell-1)*n^2+(1:n-2)*n+(2:n-1)-1) = 1/d^2;
M((cell-1)*n^2+(1:n-2)*n+(2:n-1),(cell-1)*n^2+(1:n-2)*n+(2:n-1)) = -4/d^2-a;
M((cell-1)*n^2+(1:n-2)*n+(2:n-1),(cell-1)*n^2+(1:n-2)*n+(2:n-1)+1) = 1/d^2;
M((cell-1)*n^2+(1:n-2)*n+(2:n-1),(cell-1)*n^2+(1:n-2)*n+(2:n-1)-n) = 1/d^2;
M((cell-1)*n^2+(1:n-2)*n+(2:n-1)j,(cell-1)*n^2+(1:n-2)*n+(2:n-1)+n) = 1/d^2;
C((cell-1)*n^2+(1:n-2)*n+(2:n-1),1) = b;

댓글 수: 1

AC
AC 2021년 5월 10일
Thank you for your answer! I tried this, but didn't work. When using the double for loop, I get (n-2)*(n-2) combinations of ki's and kj's. But (cell-1)*n^2+(1:n-2)*n+(2:n-1) is a vector of length (n-2). I need a vector of length (n-2)*(n-2)

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

제품

릴리스

R2020a

질문:

AC
2021년 5월 10일

댓글:

2021년 5월 13일

Community Treasure Hunt

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

Start Hunting!

Translated by