MATLAB Answers

Loop for forward difference finite method

조회 수: 5(최근 30일)
Good evening everyone,
I have a problem whereby my function stops running at the end of first row and doesn't start up again at the beginning of the next because I do not know to tell it that it has reached the end.
d_d = diff(dd,1,2);
ts = 1440;
% Finds the dimensions of the matrix containing PWP values for each node
sPWP = d_d(:,:);% Starts at the beginning value for each column
sPWP = [d_d, d_d(:,end)]; % Duplicate the end row
[rows, zones] = size(d_d);
dfdx_sim = nan(size(sPWP)); %Preallocate zero matrix based on B dimensions (Saves the CPU reiterating over the same list)
for g = 1:zones
for h = 1:rows
%while g+1<zones
dfdx_sim(g,h) = ((sPWP(g+1,h) - sPWP(g,h)))/ts;

  댓글 수: 2

Stephen Cobeldick
Stephen Cobeldick 26 Jul 2019
When I load your .mat file and run your code I get this error:
Undefined function or variable 'dd'.
Error in sample (line 5)
d_d = diff(dd,1,2);
When I comment-out that line (because you seem to have supplied d_d in the .mat file) I get this error:
Attempted to access sPWP(2,8); index out of bounds because size(sPWP)=[191,7].
Error in sample (line 16)
dfdx_sim(g,h) = ((sPWP(g+1,h) - sPWP(g,h)))/ts;
Please ensure that your code and data demonstrate what you experience. It we cannot reproduce what you are experiencing, then it makes it harder for us to help you.
Richard Rees
Richard Rees 26 Jul 2019
Good morning, I have uploaded an excel file with the data on.

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

채택된 답변

SaiDileep Kola
SaiDileep Kola 29 Jul 2019
I went through your code and I see that you need to swap the arguments “g” and “h” in the equation inside the nested “for” loop
dfdx_sim(h,g) = ((sPWP(h,g+1) - sPWP(h,g)))/ts;
You will get the expected output now.

  댓글 수: 1

Richard Rees
Richard Rees 30 Jul 2019
Hi, thanks for that. I figured out the same thing.

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

추가 답변(0개)

Translated by