資源簡介
基于Matlab/Simulink建模的算法:Trigger. Trigger使用移動(dòng)平均和匹配濾波器對(duì)原始信號(hào)進(jìn)行噪聲處理和信號(hào)峰值提取,并驗(yàn)證原始信號(hào)的正確性。Trigger使用M-code實(shí)現(xiàn),并且使用S-function封裝到Simulink中。
代碼片段和文件信息
function?trigger_constant(block)
%?Level-2?MATLAB?file?S-Function?for?unit?delay?demo.
%???Copyright?1990-2009?The?MathWorks?Inc.
%???$Revision:?1.1.6.2?$?
??setup(block);
??
%endfunction
function?setup(block)
??
??block.NumDialogPrms??=??0;
??
??%%?Register?number?of?input?and?output?ports
??block.NumInputPorts??=?2;
??block.NumOutputPorts?=?2;
??%%?Setup?functional?port?properties?to?dynamically
??%%?inherited.
??block.SetPreCompInpPortInfoToDynamic;
??block.SetPreCompOutPortInfoToDynamic;
??
?
??block.InputPort(1).Dimensions??????=?85;
??block.InputPort(1).DatatypeID??????=?0;
??block.InputPort(1).DirectFeedthrough?=?1;
??block.InputPort(2).Dimensions????????=?1300;
??block.InputPort(1).DatatypeID??????=?0;
??block.InputPort(2).DirectFeedthrough?=?1;
??
??block.OutputPort(1).Dimensions???????=?1300;
??block.OutputPort(1).DatatypeID??????=?0;
??block.OutputPort(2).Dimensions???????=?85;
??block.OutputPort(2).DatatypeID??????=?0;
??
??%%?Set?block?sample?time?to?inherited
??block.SampleTimes?=?[-1?0];
??
??%%?Set?the?block?simStateCompliance?to?default?(i.e.?same?as?a?built-in?block)
??block.SimStateCompliance?=?‘DefaultSimState‘;
??%%?Register?methods
??block.RegBlockMethod(‘PostPropagationSetup‘????@DoPostPropSetup);
??block.RegBlockMethod(‘InitializeConditions‘????@InitConditions);??
??block.RegBlockMethod(‘Outputs‘?????????????????@Output);??
??block.RegBlockMethod(‘Update‘??????????????????@Update);
??block.RegBlockMethod(‘SetInputPortSamplingMode‘@SetInputPortSamplingMode);
??block.RegBlockMethod(‘SetInputPortDimensions‘?@SetInpPortDims);
%endfunction
function?DoPostPropSetup(block)
??%%?Setup?Dwork
??block.NumDworks?=???1;
??block.Dwork(1).Name?=?‘x0‘;?
??block.Dwork(1).Dimensions??????=?1385;
??block.Dwork(1).DatatypeID??????=?0;
??block.Dwork(1).Complexity??????=?‘Real‘;
??block.Dwork(1).UsedAsDiscState?=?true;
%endfunction
function?InitConditions(block)
??%%?Initialize?Dwork
??
%endfunction
function?Output(block)
Nbuffer?=?1300;?%%total?buffer?size?
LenMA?=?85;%%lenth?of?MA?buffer
Lbuffer?=?zeros(1LenMA);
MAbuffer?=?zeros(1Nbuffer);
Triggerdata2?=?block.Dwork(1).Data;
Triggerdata2?=?Triggerdata2‘;
for?i=?1:Nbuffer
????for?j=?1:LenMA?
????????Lbuffer(1j)=?Triggerdata2(1i+j);
????end
???
????MAbuffer(1i)?=?mean(Lbuffer);
end
Pbuffer?=?Lbuffer;
????
Ma?=?0;
Mc?=?85;
Mb?=?170;
Fbuffer?=?zeros(1Nbuffer-Mb);
for?n?=?1:(Nbuffer-Mb)
????Fbuffer(1n)?=?2*MAbuffer(1n+Mc)-?MAbuffer(1n+Ma)-?MAbuffer(1n+Mb);??
end
??block.OutputPort(1).Data?=?MAbuffer;
??block.OutputPort(2).Data?=?Pbuffer;
??
%endfunction
function?Update(block)?
block.Dwork(1).Data?=?[block.InputPort(1).data;block.InputPort(2).data];
%endfunction
function?SetInputPortSamplingMode(block?idx?fd)
block.InputPort(idx).SamplingMode?=?fd;
block.InputPort(idx).SamplingMode?=?fd;
block.OutputPort(idx).SamplingMode?=?fd;
block.OutputPort(idx).SamplingMode?=?fd;
function?SetInpPortDims(block?idx?di)
block.InputPort(idx).Dimensions?=?di;
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????27086??2012-08-11?11:18??Trigger?Algorithm\msfcndemo_sfundsc2.mdl
?????文件????????198??2012-08-09?17:42??Trigger?Algorithm\Pbuffer.mat
?????文件?????717888??2012-08-09?12:02??Trigger?Algorithm\triggerdata_4KHZ_Constant.mat
?????文件?????717965??2012-08-11?08:27??Trigger?Algorithm\triggerdata_constant.mat
?????文件???????2994??2012-08-11?11:17??Trigger?Algorithm\trigger_constant.m
?????目錄??????????0??2012-08-16?20:45??Trigger?Algorithm
-----------?---------??----------?-----??----
??????????????1466131????????????????????6
評(píng)論
共有 條評(píng)論