matlab中如何让循环中的某一句只执行一次?或如何对一个变量初始化一次?

问题描述:

matlab中如何让循环中的某一句只执行一次?或如何对一个变量初始化一次?
我在matlab中使用ode45解微分方程function1,而function1中有一个时变参数,编写为function2,function2中有一个句 a=a+b; 但之前没有对a初始化,matlab就提示 “the variable 'a' might be used before it is defined ”.如果开头初始化a=0,那么每次迭代时,a都会被重置到0.应该怎么让a只在第一次初始化,后面就不再次执行a=0这句?
解决了,用全局变量global,原来我用的global只在主文件中定义了一次,没在function文件中声明,所以没传过去.正确的做法是在所用到的文件中都加上 “ global a;” 这一句.
1个回答 分类:综合 2014-11-16

问题解答:

我来补答
自然是将初始化写在循环之前了.
在你这个里就是将a=0写在第一次调用function2之前了
再问: 不行啊,我的function1和function2都是编写的m文件,循环是由主函数m文件中的ode45函数自己产生的,也就是ode45让function1循环,function2也跟着循环了。如果a=0写在循环前,也就是要在ode45前,那就是在主函数m文件中。但我试过了,在主函数m文件定义的a,在function2中根本不起作用,传不过去。
 
 
展开全文阅读
剩余:2000