在simulink中以矩阵格式存储数据

时间:2013-04-19 05:21:54

标签: matlab function matrix simulink

在模拟过程中是否可以以表格或矩阵格式存储数据?我创建了一个启用的子系统,其中是一个嵌入式功能块。每当子系统启用时(在满足条件时),两个值表示A& B输入到嵌入式matlab函数中。我要求A分别存储在(1,1)和B中(1,2)。如果系统再次启用,那么新的A& B必须分别存储在(2,1)和(2,2)中。简而言之,我需要的是

A B

New_A New_B

Again_New_A Again_New_B

...

我面临的问题是:

1)需要将矩阵分配给mat = 0(10,2);在使用它之前。第一次启用子系统A和B使用输入第一和第二列 mat(i,1)= A; mat(i,2)= B;

在执行期间第二次启用系统时,先前存储的A和B值将被删除并重置为零。

第一次启用:

A B

0 0

0 0

...

第二次启用:

0 0

New_A New_B

0 0

...

重置以前存储的值。

2)无法将mat设置为mat = [];因为它抛出了一个无法初始化为空值的错误。

3)我尝试将新行附加到矩阵的末尾,但又引发了超出预定义维度的错误。

如果有任何方法可以得到我期待的东西,请告诉我。

谢谢 - Shruthi

1 个答案:

答案 0 :(得分:0)

要在MATLAB功能块中的不同时间步之间存储数据,您应该使用以下模式。

persistent mat
if isempty(mat)
  mat = zeros(10,2);
  cnt = 1; % Counter to count number of times enabled
end

if cnt <= 10
  mat(cnt,1) = A;
  mat(cnt,2) = B;
end
cnt = cnt + 1;

使用persistent属性可以在不同的调用之间存储数据。