📄 shiyan3.m
字号:
function varargout = shiyan3(varargin)% SHIYAN3 Application M-file for shiyan3.fig% FIG = SHIYAN3 launch shiyan3 GUI.% SHIYAN3('callback_name', ...) invoke the named callback.% Last Modified by GUIDE v2.0 06-May-2003 08:27:14if nargin == 0 % LAUNCH GUI fig = openfig(mfilename,'reuse'); % Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig); guidata(fig, handles); if nargout > 0 varargout{1} = fig; endelseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK try if (nargout) [varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard else feval(varargin{:}); % FEVAL switchyard end catch disp(lasterr); endend% --------------------------------------------------------------------function varargout = T_pushbutton1_Callback(h, eventdata, handles, varargin)% global x;x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,... -4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0,0];k=1;subplot(2,2,2);n=0:56;stem(n,x,'.');% axis([0 56 -100 50]);hold onn=0:60;m=zeros(61);plot(n,m);xlabel('n');ylabel('x(n)');title('心电图信号');hold off% B=[0.09036 2*0.09036 0.09036];B=eval(get(handles.T_edit1,'string'));% C=B;% keyboard;% A=[1.2686 -0.7051]; %滤波器分母系数向量的第一个数默认为一故省掉不写 A=[1 1.2686 -0.7051]A=eval(get(handles.T_edit2,'string'));C1=A;A1=eval(get(handles.T_edit3,'string'));% A1=[1.0106 -0.3583];%A1=[1 1.0106 -0.3583]A2=eval(get(handles.T_edit4,'string'));% A2=[0.9044 -0.2155]; %A2=[1 0.9044 -0.2155]while(k<=3) y=filter(B,A,x); %A为滤波器的分母系数向量,B为滤波器的分母系数向量 x=y; %三次递归代算 if k==2 A=A1; end if k==3 A=A2; end k=k+1;endsubplot(2,2,3);n=0:56;stem(n,y,'.');% axis([0 56 -15 5]);hold onn=0:60;m=zeros(61);plot(n,m);xlabel('n');ylabel('y(n)');title('经过滤波后的心电图信号');hold off% A=[0.09036,0.1872,0.09036]; %用B来代替A=B;% B1=[1,-1.2686,0.7051]; %用C1来变换获得C1=-C1;B1=str2num(['1 ',num2str(C1)]);% B2=[1,-1.0106,0.3583]; %用A1来变换获得A1=-A1;A1=['1 ',num2str(A1)];B2=str2num(A1);% B3=[1,-0.9044,0.2155]; %用A2来变换获得A2=-A2;B3=str2num(['1 ',num2str(A2)]);[H1,w]=freqz(A,B1,128);[H2,w]=freqz(A,B2,128);[H3,w]=freqz(A,B3,128);H4=H1.*(H2);H=H4.*(H3);mag=abs(H);db=20*log10((mag+eps)/max(mag));subplot(2,2,4);plot(w/pi,db);axis([0,0.5,-50,10]);xlabel('w');ylabel('db');title('滤波器的幅频响应特性');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -