当前位置:首页 > 内存 > 正文

matlab变量预分配内存

  • 内存
  • 2024-05-11 03:42:57
  • 1069

一、matlab结构体数组预分配内存首先你必须知道你的结构体的结构,然后你可以先为结构体的一个单元分配内存
例如结构体变量x的取值范围为a,b,c
x.a=null(...);
x.b=null(...);
x.c=null(...);
这为结构x分配内存,其中包括数组的大小由null语句后的大小决定
此时你希望x是一个结构矩阵,即有多个实体具有相同的结构
你可以使用
x=repmat(x,[mn]);
这样就将x展开为m*n的矩阵,并分配了各个单元的内存。


二、matlab自控领域的问题1.初始定义称为“预分配”。这意味着为用于存储结果的变量(通常是全零矩阵)预先分配足够的存储空间,并将数组中的元素替换为实际值。这种技术在某些循环具有越来越多变量的情况下非常有用,有时会使程序效率降低数十甚至数百倍。但在这段代码中,它并不是真正需要的。
2.存在一些问题。我将分别解释它们。
(1)代码错误。y(:,1)必须是y(:,i)。
(2)step函数返回的第一个变量y是一个列向量(如果要返回两个或三个变量要特别小心。在传统形式中,第二个和第三个变量的顺序返回参数t和x相反),四对对应的参数值对应的结果分别存储在矩阵y的四列中。
(3)使用绘图时,如果两个变量都是向量,则行向量和列向量之间没有区别。如果t是向量且y是矩阵,则默情况下将y的每一列绘制为垂直轴。但是,如果y与t具有相同的列数但行数不同,则y的每一行将被绘制为垂直轴(不推荐这样做,但实际上是有效的)。因此,绘图语句不需要非常复杂。使用plot(t,y)或Lot(t,y')。