显然,我无法生成[3x3x3]尺寸的信号:
function Test_SF_02(block)
% Level-2 MATLAB file S-Function.
setup(block);
function setup(block)
% Register number of ports and parameters
block.NumInputPorts = 0;
block.NumOutputPorts = 1;
block.NumDialogPrms = 0;
% Setup functional port properties to dynamically inherited
block.SetPreCompOutPortInfoToDynamic;
% Register the properties of the output port
block.OutputPort(1).SamplingMode = 'Sample';
%block.OutputPort(1).DimensionsMode = 'Variable';
block.OutputPort(1).DimensionsMode = 'Fixed';
block.OutputPort(1).Dimensions = [3 3 3];
% Register sample times
% [-1, 0] : Inherited sample time
block.SampleTimes = [-1 0];
% Register methods called at run-time
block.RegBlockMethod('Outputs', @Outputs);
function Outputs(block)
block.OutputPort(1).Data = zeros(3,3,3);
block.OutputPort(1).Dimensions
分配时出现错误,并说
无法设置' Test_01 / Level-2 MATLAB的输出端口1的尺寸 S-功能'至[3x3x3]。此块未设置为处理信号 尺寸大于2维。
为什么呢?我看到了块,生成了图像帧,即MxNx3
矩阵。
更新
这不是重复的问题。
答案 0 :(得分:2)
在设置方法中,您需要使用方法
block.AllowSignalsWithMoreThan2D = 1;
这通常会在定义输入,输出和参数的数量后立即完成。
另请注意,作为源块,Simulink希望您指定其采样时间,而不是将其重新继承。