如何编写S函数,生成高于2维的信号?

时间:2013-07-17 21:35:30

标签: matlab image-processing simulink

显然,我无法生成[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矩阵。

更新

这不是重复的问题。

1 个答案:

答案 0 :(得分:2)

在设置方法中,您需要使用方法

block.AllowSignalsWithMoreThan2D = 1;

这通常会在定义输入,输出和参数的数量后立即完成。

另请注意,作为源块,Simulink希望您指定其采样时间,而不是将其重新继承。