⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 notch.m

📁 jitterbug-1.21 一个基于MATLAB的工具箱
💻 M
字号:
% Jitterbug example: notch.m% ==========================% Calculate the performance of a notch filter with lost samples.scenario = 2; % 1=no filter, 2=notch filter, 3=time-varying Kalman filterp = 0.1;      % Probability of lost samples = tf('s');z = tf('z');h = 0.1;       % Sampling period% System generating the good signalG1 = 100/(s+1)^2;R1 = 2*pi;     % Input noise variance% System generating the disturbanceomega = 20;    % Resonance frequencyzeta = 0.001;  % DampingG2 = 50/(s^2+2*zeta*omega*s+omega^2);R2 = 2*pi;     % Input noise varianceSamp = [1 1];  % Discrete-time system that samples x + eDiff = [1 -1]; % Discrete-time system that computes x - xhatswitch scenario, case 1,  % No filter  Filter1 = 1;  Filter2 = []; % same dynamics (i.e., none)  Delay = 1;  case 2,  % Zero-phase notch filter  a = -0.5/cos(omega*h);  Filter1 = ss(tf([a 1 a],[1 0 0],h));  Filter1 = Filter1/dcgain(Filter1);  Filter2 = []; % same dynamics  Delay = 1/z;  % The notch filter has a delay of one sample case 3,  % Kalman filter based on simple model of G1 (integrator)  [a1,g1,c1] = ssdata(ss(-0.00001,15,1,0));  [a2,g2,c2] = ssdata(G2);  a = blkdiag(a1,a2);  g = eye(size(a,1));  c = [c1 c2];  r1 = blkdiag(g1*g1',g2*g2');  r2 = 0;  phi = ssdata(c2d(ss(a,g,c,0),h));  kf = lqed(a,g,c,r1/h,r2,h);  k = phi*kf;  phio = (phi-k*c);  gammao = k;  co = [c1 0*c2]*(eye(size(a,1))-kf*c);  do = [c1 0*c2]*kf;  Filter1 = ss(phio,gammao,co,do,h);         % Prediction and correction  Filter2 = ss(phi,zeros(size(a,1),1),[c1 0*c2],0,-1); % Prediction only  Delay = 1;enddelta = h;          % Time-grain = sampling intervalPtau = [1];         % Zero delay between timing nodesQ = diag([1 0 0]);  % J = xtilde^2N = initjitterbug(delta,h);       % Initialize JitterbugN = addtimingnode(N,1,Ptau,[2 4],[1-p p]);  % Add node 1N = addtimingnode(N,2,Ptau,3);              % Add node 2N = addtimingnode(N,3,Ptau,5);              % Add node 3N = addtimingnode(N,4,Ptau,5);              % Add node 4N = addtimingnode(N,5);                     % Add node 5N = addcontsys(N,1,G1,0,[],R1);      % Add sys 1 (G1)N = addcontsys(N,2,G2,0,[],R2);      % Add sys 2 (G2)N = adddiscsys(N,3,Samp,[1 2],2);    % Add sys 3 (Samp) to node 2N = adddiscsys(N,4,Filter1,3,3);     % Add sys 4 (Filter) to node 3N = adddiscexec(N,4,Filter2,3,4);    % Add execution of sys 4 to node 4N = adddiscsys(N,5,Delay,1,1);       % Add sys 5 (Delay) to node 1N = adddiscsys(N,6,Diff,[5 4],5,Q);  % Add sys 6 (Diff) to node 5N = calcdynamics(N);    % Calculate internal dynamics[J,P,F] = calccost(N);  % Calculate cost and spectral densitiesJfigure(1)bodemag(F{1},F{2},F{4},F{6})  % Plot spectra of outputs 1,2,4,6axis([0.1 pi/h 1e-4 1e6]);legend('Good Signal','Disturbance','Filter Output','Error');title('Spectral Densities')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -