How to run a loop for multiple variations of a variable.

조회 수: 2 (최근 30일)
Westin Messer
Westin Messer 2018년 10월 22일
편집: Matt J 2018년 10월 22일
Hello, I'm new to MATLAB and coding and I'm trying to vary the parameter 'p' from 0 to 3 in incriminates of 1 inside the loop which should give me three different sets of data for the v_d equation but I can't get it to work. Can anyone see what I am doing wrong? Thanks!
e=0.01; k=4; a=0.1; p = 0:1:3;
i = 0.001;
u=zeros(100000,1);
v=zeros(100000,1);
v_d=zeros(100000,1);
t=zeros(100000,1);
% Initial conditions:
u(1)=0.6;
v(1)=0.0;
v_d(1)=0.0;
t(1)=0;
dt=0.001;
for i=1:1:50000
t(i+1)=t(i)+dt;
u(i+1) = u(i)+ dt*((1/e)*((k*u(i)*(u(i)-a)*(1-u(i)))-v(i)));
v(i+1) = v(i)+ dt*(u(i)-v(i));
v_d(i+1) = v_d(i)+ dt*(u(i)-p*v_d(i));
end
  댓글 수: 1
Matt J
Matt J 2018년 10월 22일
which should give me three different sets of data for the v_d equation
Don't you mean 4 different sets: 0,1,2,3

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

채택된 답변

Matt J
Matt J 2018년 10월 22일
v_d=zeros(50000,4); %<--change
t(1)=0;
dt=0.001;
for i=1:1:50000
t(i+1)=t(i)+dt;
u(i+1) = u(i)+ dt*((1/e)*((k*u(i)*(u(i)-a)*(1-u(i)))-v(i)));
v(i+1) = v(i)+ dt*(u(i)-v(i));
v_d(i+1,:) = v_d(i,:)+ dt*(u(i)-p.*v_d(i,:)); %<--change
end
  댓글 수: 2
Westin Messer
Westin Messer 2018년 10월 22일
Thanks! In another part of my code I have:
p = 0:1:3;
upts=(-2:.05:2);
vnullpts_d=upts/p;
And I get the following error:
Matrix dimensions must agree.
Error in BME_721_Midterm (line 50)
vnullpts_d=upts/p;
Do you know how I'd fix this to get four different values of vnullpts?
Matt J
Matt J 2018년 10월 22일
편집: Matt J 2018년 10월 22일
4 different values per value of upts, you mean? So, you want the result as a 4x81 matrix? If so, one option is
vnullpts_d=upts./p(:);
Although, be mindful that you have a divide-by-zero condition, because of p(1)=0.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by