Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何';零';每个循环迭代中的所有变量_Matlab_Initialization_Zero - Fatal编程技术网

Matlab 如何';零';每个循环迭代中的所有变量

Matlab 如何';零';每个循环迭代中的所有变量,matlab,initialization,zero,Matlab,Initialization,Zero,我用matlab写了一个描述动态生物过程的脚本;输入为一年的每日温度值。模型在此每日时间步长上运行一年,执行流程所需的不同计算 我有三十年的温度数据(大小为365*30的矩阵),我打算在脚本的开头写一个“for循环”,以便连续使用每年的每日数据。我有大约5个变量,它们是脚本的输出,我打算在每次迭代时将它们输出到txt/csv文件中。我的问题是,模型中大约有80个变量,我想在最外层循环(温度输入)的每次迭代中将它们全部归零。我想以一种有效的方式来做这件事,而不是把所有变量单独归零。有人知道怎么做吗

我用matlab写了一个描述动态生物过程的脚本;输入为一年的每日温度值。模型在此每日时间步长上运行一年,执行流程所需的不同计算

我有三十年的温度数据(大小为365*30的矩阵),我打算在脚本的开头写一个“for循环”,以便连续使用每年的每日数据。我有大约5个变量,它们是脚本的输出,我打算在每次迭代时将它们输出到txt/csv文件中。我的问题是,模型中大约有80个变量,我想在最外层循环(温度输入)的每次迭代中将它们全部归零。我想以一种有效的方式来做这件事,而不是把所有变量单独归零。有人知道怎么做吗

我一直在考虑使用“who”函数列出所有变量,我认为它可以以某种方式将所有变量归零。我试着让x=谁;这似乎产生了一个所有变量的倒逗号列表。但显然,;尝试让x=0之后,只会重新定义x。我也在考虑只使用“全部清除”,但我认为这确实会减慢模型的速度,因为它将“从头开始”重新定义每个循环中的所有变量?
任何帮助都将不胜感激。

首先,如果你有80个变量,你可能正在做一些奇怪的事情。考虑将它们组合成向量或数组,例如:

话虽如此,我可以考虑两种情况:

  • 您已经在某个地方初始化了所有变量
  • 在这种情况下,解决方案很简单:将初始化移动到外部循环的开始

  • 您不初始化任何内容(糟糕的做法,尤其是当您关心性能时)
  • 在这种情况下,应该在循环中放置一个函数,该函数只返回输出变量,而不是所有这些松散的中间变量

    也许这两种方法的组合也适用,但我真的建议不要使用80个不同的变量!并初始化您需要使用的任何变量

    初始化标量的紧凑语法如下:

    [a, b,c]  = deal(0);
    

    你不能把所有的变量都放在一个结构中吗?否则,我想这是一个不错的
    eval
    用例,只需在帖子中包含您迄今为止尝试过的内容。@Dan我以前从未使用过struct命令,但我会看一看。但并非所有的输出变量都具有相同的维度,因此这可能是一个问题?@NKN除了独立地将每个变量名归零之外;并允许x=后面跟着的人尝试将“x”归零。我还没试过其他方法。我的很多变量都是向量?该模型由各种动态交互的子模型/功能组成。大多数变量在模型开始时启动,而其他变量则根据需要在模型中创建。问题是,当我想使用新一年的输入(临时数据)时,我担心将前一年的值保留在原位可能会导致错误,因为使用了大量累积变量。我知道我可以简单地将最外层for循环之外的所有值初始化为零;我只是希望有一种我没有想到的更有效的方法。“deal函数看起来很有用。@matlab_newby从您的评论判断,我认为将相关代码放在函数中似乎是一个不错的选择。每次调用一个函数时,它都会得到自己的工作区,这样就不会有上一次运行代码时的“污染”。如果不确定如何实现,请尝试使用
    帮助功能
    文档功能