如何在 Simulink 下更正 "Error in default port dimensions function of S-function 'X'.function doesnt fully set the dimensions of output port x"?

How to correct "Error in default port dimensions function of S-function 'X'.function doesnt fully set the dimensions of output port x" under Simulink?

我是一名硕士生,我正在学习电气工程 - 控制系统。 我被分配(由我的主管教授)模拟反馈线性化控制方法,所以我选择了一篇论文(附在下面)并为它制作了一个 simulink 模型。问题是当我尝试 运行 模拟时,它给出了错误: S-Function 'FeedbackLinearization/Controller' 的默认端口尺寸函数错误。此函数没有完全设置输出端口 2 的尺寸 所以我打开信号尺寸显示来检查信号尺寸并检查我是否犯了错误。我发现 'e' 信号有问题。它应该是一个 3*1 向量,表示跟踪 x-y-z 的错误。如您所见,多路复用器的输出维度为 3,所以一切正常。问题是当信号到达一个块(MATLAB 函数或导数)时,它的维数减少到一。我附上了我的 slx 模型,所以请您看一看。 我检查了 Controller Matlab func 和 Plant Matlab func,它们工作正常。 请帮我。这对我来说太重要了!感谢您的时间和考虑!

论文: http://uupload.ir/view/z9mg_aminfl.pdf/

潜在的问题出现在这里: http://uupload.ir/files/jc3k_capture.jpg

在模型中,当存在反馈循环时,如果输入大小取决于输出大小,有时维度无法成功传播。该模型可能属于该类别。为了解决这种情况,您应该在知道大小的位置插入一个 "Signal Specification" 块。例如,在 mux 的输出端。

https://www.mathworks.com/help/simulink/slref/signalspecification.html?s_tid=doc_ta

如果您在圈出的 Mux 的输出端插入此块,则可以将维数参数设置为 3,所有其他设置为默认值。