【问题标题】:Storing data in matrix format in simulink在simulink中以矩阵格式存储数据
【发布时间】:2013-04-19 05:21:53
【问题描述】:

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

甲乙

新_A 新_B

Again_New_A Again_New_B

....

我面临的问题是:

1) 需要将矩阵赋值给mat = zeros(10,2);在使用它之前。第一次启用子系统时,使用 A 和 B 在第一列和第二列中输入 垫(我,1)=一个; mat(i,2) = B;

当系统在执行过程中第二次启用时,之前存储的 A 和 B 的值将被擦除并重置为零。

第一次启用:

甲乙

0 0

0 0

...

第二次启用:

0 0

新_A 新_B

0 0

...

先前存储的值被重置。

2) 不能将 mat 设置为 mat = [];因为它会抛出一个错误,即无法将 mat 初始化为空值。

3) 我尝试将新行附加到矩阵的末尾,但它再次引发超出预定义尺寸的错误。

如果有什么方法可以达到我的预期,请告诉我。

谢谢你- 斯鲁提

【问题讨论】:

    标签: matlab function matrix simulink


    【解决方案1】:

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

    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 属性可以让您在不同的调用之间存储数据。

    【讨论】:

      猜你喜欢
      • 2017-07-12
      • 2014-12-21
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多