simulink中固定大小矩阵和可变大小矩阵创建的几个陷阱

文章目录

  • 1 固定大小矩阵的创建
  • 2 可变大小矩阵的创建

Simulink进行数据处理时经常需要在matlab function里面创建矩阵,但一不留神就会出现创建的矩阵维度错误的问题,有一些比较明显的错误根据提示就知道如何修改,但有一些不会给出明显的提示,如下面这个报错,错误认为input SFunction的输入维度无效,这种bug不可能会跑到底层的input SFunction下面去debug,只能在你的程序里解决。

Error in port widths or dimensions. Invalid dimension has been specified for input ' SFunction

1 固定大小矩阵的创建

在m脚本或者m函数中是可以创建类似

width = 2;
a = zeros(1,width);

这样的固定大小矩阵,但是在Simulink环境下,如果width在workspace里面, 然后你将width作为matlab function的输入,这样就会出现矩阵维度不能识别或者维度错误的问题。原因是你这样写的本意可能是想创建一个固定size的矩阵,但是compiler会认为这是一个可变大小的矩阵,然后可变大小的矩阵实际上还需要设置一些东西,你没有设置,因此会报错!

所以使用固定size矩阵最好的方法是直接写出矩阵大小,而不是将size作为输入传入matlab function。

我遇到过类似的问题,源文件和对应的解决方法如下:
All the data type looks like very normal,but why report: Error in port widths or dimensions. Invalid dimension has been specified for input ’ SFunction '?

2 可变大小矩阵的创建

你可能感兴趣的:(simulink,可变矩阵,固定矩阵)