📄 my_convecd.m
字号:
function my_convencode(block)
setup(block);
function setup(block)
block.NumInputPorts = 1;
block.NumOutputPorts = 1;
block.SetPreCompInpPortInfoToDynamic;
block.SetPreCompOutPortInfoToDynamic;
block.NumDialogPrms = 2;
block.DialogPrmsTunable = {'Tunable','Tunable'};
block.InputPort(1).Dimensions = size(block.DialogPrm(2).Data,2)/block.DialogPrm(1).Data;
block.InputPort(1).DirectFeedthrough = false;
block.OutputPort(1).Dimensions = size(block.DialogPrm(2).Data,1);
block.SampleTimes = [-1 0];%not sure
block.RegBlockMethod('CheckParameters', @CheckPrms);
block.RegBlockMethod('PostPropagationSetup', @DoPostPropSetup);
block.RegBlockMethod('InitializeConditions', @InitializeConditions);
block.RegBlockMethod('Outputs', @Outputs);
block.RegBlockMethod('Update', @Update);
function CheckPrms(block)
L = block.DialogPrm(1).Data;
G = block.DialogPrm(2).Data;%G is n rows and k*L column
if rem(size(G,2),L)~=0
error('Error,size of G and L do not agree.');
end
function DoPostPropSetup(block)
L=block.DialogPrm(1).Data;
G = block.DialogPrm(2).Data;
block.NumDworks = L-1;
x='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
for i=1:L-1
block.Dwork(i).Name = x(i);
block.Dwork(i).Dimensions = size(G,2)/L;
block.Dwork(i).DatatypeID = 0; % double
block.Dwork(i).Complexity = 'Real'; % real
block.Dwork(i).UsedAsDiscState = true;
end
function InitializeConditions(block)
for i=1:block.DialogPrm(1).Data-1
block.Dwork(i).Data =zeros(1,size(block.DialogPrm(2).Data,2)/block.DialogPrm(1).Data);
end
function Outputs(block)
L = block.DialogPrm(1).Data;
G = block.DialogPrm(2).Data;
k=size(G,2)/L;
u1=block.InputPort(1).Data;
u=u1(k:-1:1);
n=size(G,1);
for i=1:L-1
u=[u,block.Dwork(i).Data];
end
uu=reshape(u,k*L,1);
block.OutputPort(1).Data = reshape(rem(G*uu,2),1,n);
function Update(block)
L = block.DialogPrm(1).Data;
G = block.DialogPrm(2).Data;
k=size(G,2)/L;
for i=1:L-2
block.Dwork(L-i).Data= block.Dwork(L-i-1).Data;
end
block.Dwork(1).Data = block.InputPort(1).Data(k:-1:1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -