24小时热门版块排行榜    

查看: 2048  |  回复: 11

shao0722

金虫 (职业作家)

[求助] 请教一下,MATLAB如何实现一次循环结束后继续下一次循环 已有2人参与

请教一下一次循环结束后进行下一次循环,比如自变量为t我设步长dt,从t1=0直到t2=200;
按照自变量t计算完一次循环,然后按照 t+dt 计算完下一次循环,
以此类推直至t=t2, 步数t2/dt,即循环t2/dt次
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

xgdcgy

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
双重循环即可,外层循环控制起始变量,内层循环计算。

» 本帖已获得的红花(最新10朵)

经世济民。
4楼2016-07-09 16:49:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jhl2011

新虫 (小有名气)

另外,你如果想记录每一步运行的P的话,应该把结果记录到一个向量里面,
预先定义
P = zeros((t2-t1)/dt+1,1);
循环的时候用
t = t1:dt:t2;
for i = 1:1t2-t1)/dt
   time = t(i);
...
结果写到P(i)中
end
循环结束后就得到了一个向量P,对应每一步的结果
11楼2016-07-14 08:48:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

shao0722

金虫 (职业作家)

clear
endtime=1000;
dt=0.0025;
time=0;
for N=endtime/dt;
for i = 1:1:N
    time=(i-1)*dt;
  Y=2;
if (time < 150)
P=0.0;
elseif ((time>=150) && (time < 160))
  P =Y*(time-150)/10;%X=[2,3.95,8.1,18.66,55]
elseif ((time >=160) && (time<250))
  P =Y;
elseif ((time>=250)&& (time<260))
  inletgasmassrate = Y -Y*(time-250)/10;
elseif ((time>=260)&&(time<300))
  P =0;
end
end
i=i+1;
end  

请教一下,这个多次循环有啥问题,问什么P值算出来是零
2楼2016-07-08 10:56:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Justin147

铁杆木虫 (著名写手)

哥们,你最好还是找matlab书或资料先学习一下吧,基本错误一堆

发自小木虫Android客户端
3楼2016-07-09 08:48:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shao0722

金虫 (职业作家)

引用回帖:
4楼: Originally posted by xgdcgy at 2016-07-09 16:49:40
双重循环即可,外层循环控制起始变量,内层循环计算。

我发现p要写成p(i),否则只能是一个值

发自小木虫Android客户端
5楼2016-07-09 23:59:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shao0722

金虫 (职业作家)

送红花一朵
引用回帖:
4楼: Originally posted by xgdcgy at 2016-07-09 16:49:40
双重循环即可,外层循环控制起始变量,内层循环计算。

谢谢,我刚学matlab,能不能写详细点,双重循环怎么写

发自小木虫Android客户端
6楼2016-07-10 00:07:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ahdzjfa

金虫 (正式写手)

matlab 的循环非常简单,稍微学学就会了

发自小木虫Android客户端
需要跑的越来越快才能保持原地不动
7楼2016-07-10 15:30:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shao0722

金虫 (职业作家)

引用回帖:
7楼: Originally posted by ahdzjfa at 2016-07-10 15:30:07
matlab 的循环非常简单,稍微学学就会了

是啊,都这么说,我是边用边学,刚学还是有点费劲老出错

发自小木虫Android客户端
8楼2016-07-10 17:32:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

7785867

新虫 (初入文坛)

9楼2016-07-12 15:07:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jhl2011

新虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
shao0722: 金币+40, ★★★★★最佳答案, 这个我已经做出来了,基本是按照你的方法做的,不过作为初学者还是能学到 2016-07-15 00:32:15
框架可以这样写:

t1 = 0;
t2 = 100;
dt = 0.0025;

for t = t1:dt:t2
    ...
end

循环次数应该是 t2/dt +1

你对matlab 中的for循环还不了解,
for t = t1:dt:t2 ... end ,“t1:dt:t2”是一个向量,你可以按照需求定义;这个循环表示 t 从向量的第一个到最后一个遍历一遍,每一次都执行循环一次,所以你的i =  i=i+1就 没有必要了。而且外面那个也没有必要,因为你for N=endtime/dt; 实际上N只有一个值所以就执行一次根本没有循环。
10楼2016-07-14 08:45:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shao0722 的主题更新
信息提示
请填处理意见