亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? er_plot.m

?? dsp工具箱
?? M
字號:
function er_plot(f,N,fs,varargin)
% function er_plot(f,N,fs,varargin)
%   Function to compute output and generate plots for given input transfer functions.
%   Plots generated are: 1) Magnitude response (specify 'dB' or 'mag' in varargin{1}), 
%   2) Phase response (in rads, specify 'normal' or 'unwrap' in varagin{2}), 3) Impulse 
%   repsonse, 4) Pole/Zero plot.  Takes transfer function parameters in struct F, length 
%   of two-sided impulse repsonse in N, sampling frequency in FS.  Last
%   input argument renames figure window to specified name (e.g., 'Figure Name').
%
%   EXAMPLE:
%   >> er_plot(f,128,1000,'db','unwrap','1')
%   
%   This command generates plots for the transfer function coefficients in
%   F, with a sample response length of 128, a sampling frequency of 1KHZ,
%   the magnitude response plotted in DB, the phase response is UNWRAPPED,
%   and the figure is given the name '1'.
%
%   Author:  Evan Ruzanski, CU-Boulder, ECEN5632 MATLAB assignment, FA2004
warning off

% Handle variable input arguments
magtype = upper(varargin{1}); 
phasetype = upper('normal');
if ((nargin == 5) | (nargin == 6))
    phasetype = upper(varargin{2});
end

% Unpack transfer functions
numd = f(1).tf_complete;
dend = f(2).tf_complete;

% Set figure, color properties and name
figure
set(gcf,'Color','White')
figs = get(0,'children');
figname = varargin{3};
figs = figs(find(strcmp(get(figs,'type'),'figure')));
figs = figs(find(strcmp(get(figs,'name'),figname)));
H = gcf;
set(H,'name',figname);

%%%%% Plot I:  Magnitude response of transfer function %%%%%

% I.A: Compute magnitude and phase response values
dend = dend(:).';
numd = numd(:).';
ndend = max(size(dend));
nnumd = max(size(numd));
fftn = 1024; % Take default 2^10 pt. FFT
ss = 2; % For half of unit circle
w = (0:fftn-1)'*2*pi/fftn/ss; % Set frequency vector
nfft = lcm(fftn,max(ndend,nnumd));
H1 = (fft([numd zeros(1,ss*nfft - nnumd)]) ./ fft([dend zeros(1,ss*nfft - ndend)])).'; % Perform FFT
H1 = H1(1+(0:fftn-1)*nfft/fftn);
switch upper(magtype) % Generate magnitude response vector
    case {'DB'}
        H = 20*log10(abs(H1));
    case {'MAG'}
        H = abs(H1);
end

% I.B: Generate magnitude plots
subplot(2,2,1)
ff  = w*fs/2/pi;
plot(ff,H);
grid
title('Magnitude spectrum, |H(e^{j\theta})|','FontName','Arial','FontSize',14)
xlabel('Hz','FontName','Arial','FontSize',10,'FontWeight','Bold')
switch upper(magtype)
    case {'DB'}
        ylabel('dB','FontName','Arial','FontSize',10,'FontWeight','Bold')
    case {'MAG'}
        ylabel('Amplitude','FontName','Arial','FontSize',10,'FontWeight','Bold')
end

%%%%% Plot II:  Phase response of transfer function (in rads) %%%%%

% II.A: Generate phase plot (use data from previous section)
P = angle(H1); % Generate phase response vector
subplot(2,2,2)
switch upper(phasetype)
    case {'UNWRAP'}
        P = unwrap(P);
        plot(ff,P);
    case {'NORMAL'}
        plot(ff,P);
end
grid
title('Phase spectrum, arg[H(e^{j\theta})]','FontName','Arial','FontSize',14)
xlabel('Hz','FontName','Arial','FontSize',10,'FontWeight','Bold')
ylabel('radians','FontName','Arial','FontSize',10,'FontWeight','Bold')

%%%%% Plot III:  Impulse response of transfer function %%%%%

% III.A: Compute impulse repsonse values

% Decompose given transfer function into causal and anticausal sections using partial fraction decomposition

%%%%% Create denominator polynomials %%%%%
lzc = shiftcheck(dend); % Strip leading/trailing zeros from shifts only
tzc = shiftcheck(fliplr(dend));
p = roots(dend); % Find poles
if (isempty(p) == 1) % Set (assumed causal) FIR case
    denc = dend;
    denac = [1];
    pc = [];
    pac = [];
elseif (lzc == tzc) % Set IIR case
    pm = abs(p); % Separate poles of causal, anticausal sections
    pc = [];
    pac = [];
    for k = 1:length(p)
        if (pm(k) < 1) % No poles at zero => trailing zero in denominator
            pc = [pc ; p(k)]; % Column vector of causal poles
        else
            pac = [pac ; p(k)]; % Column vector of anticausal poles
        end
    end
elseif (lzc ~= tzc)
    pm = abs(p); % Separate poles of causal, anticausal sections
    pc = [];
    pac = [];
    for k = 1:length(p)
        if ((pm(k) < 1) & (pm(k) ~= 0)) % No poles at zero => trailing zero in denominator
            pc = [pc ; p(k)] ;% Column vector of causal poles
        elseif (pm(k) ~= 0)
            pac = [pac ; p(k)]; % Column vector of anticausal poles
        end
    end
end
denc = poly(pc); % Causal section, ascending powers of z^(-n)
denac = poly(1./pac); % Anticausal section, ascending powers of z^(n)

% Ensure equal lengths
if (length(denc) > length(denac)) 
    denac = [denac zeros(1,length(denc)-length(denac))]; % Trailing zeros does not change tf
elseif (length(denac) > length(denc))
    denc = [denc zeros(1,length(denac)-length(denc))];
else
    denc = denc;
    denac = denac;
end

%%%%% Create numerator polynomials %%%%%
lzc = shiftcheck(numd); % Strip leading/trailing zeros from shifts only
tzc = shiftcheck(fliplr(numd));
if (lzc ~= tzc)
    numd2 = numd(lzc + 1:length(numd)-tzc);
else
    numd2 = numd;
end
if ((isempty(pc) == 1) & (isempty(pac) == 1)) % Check (assumed causal) FIR case 
    numc = numd2;
    numac = [1];
    firflag = 1;
elseif (isempty(pac) == 1) % All causal
    numc = numd2;
    numac = [1];
    firflag = 0;
elseif (isempty(pc) == 1) % All anticausal
    numac = fliplr(numd2);
    numc = [1];
    firflag = 0;
else % Non-causal
    % Create numerator polynomials using matrix equations from cross-multiplication of numerator, denominator
    lendc = length(denc);
    lendac = length(denac);
    D1(1:lendac,1:lendac) = 0; % Matrix anticausal section
    cnt = 1;
    ptr = lendac - 1;
    for k = 1:lendac
        for m = 1:cnt
            D1(k,m) = denac(ptr + m);
        end
        ptr = ptr - 1;
        cnt = cnt + 1;
    end
    D2(1:lendc,1:lendc) = 0; % Matrix causal section
    cnt = 1;
    ptr = 2;
    for k = 1:lendc
        for m = 1:cnt
            D2(k,lendc + 1 - m) = denc(ptr - m);
        end
        ptr = ptr + 1;
        cnt = cnt + 1;
    end
    D = D1 + D2;
    Dinvrs = inv(D);
    Ds = size(D);
    if length(numd2 < Ds(1))
        numd2 = [zeros(1,Ds(1) - length(numd2)),numd2];
    end
    if (Ds(1) == length(numd2))
        numc = (Dinvrs*numd2')';
    else
        numc = (Dinvrs*numd2(1:Ds(1))')';
    end
    numac = numc;
    firflag = 0;
end

%%%%% Compute impulse response %%%%%
sample_plot = -N/2:N/2-1; % Plot vector
if (firflag ~= 1)
    sample_n = -N/2+(tzc-lzc):N/2+(tzc-lzc)-1; % Impulse response vector
else
    sample_n = -N/2:N/2-1;
end
unit_pulse = (sample_n == 0);

% Check causality of response
% Check causal case
dc = shiftcheck(fliplr(denc));
denc = denc(1:length(denc) - dc);
if length(numc) == length(denc)
    cchk = numc./denc;
elseif length(numc) > length(denc)
    cchk = numc./[denc zeros(1,length(numc)-length(denc))];
elseif length(denc) > length(numc)
    cchk = [numc zeros(1,length(denc)-length(numc))]./denc;
end
cchk = sum(cchk.^2);

% Check anticausal case
dac = shiftcheck(fliplr(denac));
denac = denac(1:length(denac) - dac);
if length(numac) == length(denac)
    acchk = numac./denac;
elseif length(numac) > length(denac)
    acchk = numac./[denac zeros(1,length(numac)-length(denac))];
elseif length(denac) > length(numac)
    acchk = [numac zeros(1,length(denac)-length(numac))]./denac;
end
acchk = sum(acchk.^2);

if ((cchk ~= [1]) | (firflag == 1)) % Causal filtering
    x = unit_pulse;
    u = filter(numc,denc,x);
end

if (acchk ~= [1]) % Anti-causal filtering
    x = unit_pulse;
    x = fliplr(x);
    w = filter(numac,denac,x);
    w = fliplr(w);
end

if ((cchk ~= [1]) & (acchk ~= [1])) % Sum of parallel causal/anti-causal sections
    h = u + w;
elseif (acchk ~= [1])
    h = w;
else
    h = u;
end

%%%%%% III.B: Generate impulse repsonse plot %%%%%
subplot(2,2,3)
if tzc < lzc
    stem(sample_plot,h,'filled'),axis([-N/2+(lzc-tzc) N/2-(lzc-tzc) get(gca,'YLim')]),grid
elseif tzc > lzc
    stem(sample_plot,h,'filled'),axis([-N/2+(tzc-lzc) N/2-(tzc-lzc) get(gca,'YLim')]),grid
else
    stem(sample_plot,h,'filled'),axis([-N/2 N/2 get(gca,'YLim')]),grid
end
title('Impulse response, h[k]','FontName','Arial','FontSize',14)
xlabel('Sample Number','FontName','Arial','FontSize',10,'FontWeight','Bold')
ylabel('Amplitude','FontName','Arial','FontSize',10,'FontWeight','Bold')

%%%%% Plot IV:  Pole/zero plot of transfer function %%%%%

% IV.A: Compute poles/zeros
p1 = length(dend);
q1 = length(numd);
if ((p1 ~= 0) & (firflag == 0))
    pol = roots(dend);
else
    pol = [];
end
if (q1 ~= 0)
    zer = roots(numd);
else
    zer = [];
end
% Pole/zero cancellation
epsilon = 10e-3; % Set parameter for zero/pole cancellation at same location
delta = 10e3; % Set parameter to check for pole/zero at infinity
if ((firflag == 0) & (isempty(pol) == 0) & (sum(pol) ~= 0) & (isempty(zer) == 0)) % Check poles
    pols = pzcanx(pol,zer,epsilon,delta);
elseif (firflag == 0) % No poles to check
    pols = pol;
else % No poles or zeros
    pols = [];
end
if ((isempty(zer) == 0) & (isempty(pol) == 0)) % Check zeros
    zers = pzcanx(zer,pol,epsilon,delta);
elseif (isempty(zer) == 0) % No zeros to check
    zers = zer;
else % No poles or zeros
    zers = [];
end

% IV.B: Generate pole/zero plot
subplot(2,2,4)
t = (0:1/500:1)' * (2*pi); % Set parameters to draw circles of varying radii
for m = 1:5
    l = (6-m)/5;
    r(:,m) = l*sin(t);
    s(:,m) = l*cos(t);
    plot(r(:,m),s(:,m),'k--');hold on;
    text(5*0.15,-5*0.15,num2str(5*0.2));
end
plot(r(:,1),s(:,1),'k');
axis equal % Make circle
axis off
line([-2.5 2.5],[0 0],'Color','k');
line([0 0],[-2.5 2.5],'Color','k');
hold on;
plot(2.5,0,'>',0,2.5,'^','MarkerFaceColor','k','MarkerEdgeColor','k'); % Asthetics for plot
text(1.5,0.2,'Re','FontAngle','italic','FontName','Arial');
text(1.83,0.21,'(z)');
text(0.18,2.1,'Im','FontAngle','italic','FontName','Arial');
text(0.52,2.11,'(z)');
plot(real(pols),imag(pols),'x','MarkerFaceColor','r','MarkerEdgeColor','r','MarkerSize',8,'LineWidth',2); % Plot poles
plot(real(zers),imag(zers),'o','MarkerEdgeColor','b','MarkerSize',5,'LineWidth',1); % Plot zeros
title('Pole/zero plot for H(e^{j\theta})','FontName','Arial','FontSize',14)
hold off

%%%%% DEFINE LOCAL FUNCTIONS %%%%%
function ct = shiftcheck(a)
% SHIFTCHECK Count number of leading zeros in vector
alen = length(a);
epsilon = 10e-9;
% Count front zeros
ct = 0;
for k = 1:alen - 1
    if abs(a(k)) < epsilon
        ct = ct + 1;
        if abs(a(k + 1)) < epsilon
            ct = ct;
        elseif abs(a(k + 1)) > epsilon
            break
        end
    else
        break
    end
end

function pzvec = pzcanx(a,b,epsilon,delta)
% PZCANX Cancels elements in vector A relative to vector B based on
% lower and upper thresholds, EPSILON and DELTA, respectively.
canflag = 0;
pzvec = [];
ctr_1 = 1;
ctr_2 = 1;
for xo = 1:length(a)
    clear canflag;
    for ox = 1:length(b)
        chk = 0;
        rtest = abs(real(a(xo)) - real(b(ox)));
        imtest = abs(imag(a(xo)) - imag(b(ox)));
        if (((rtest < epsilon) & (imtest < epsilon)) | (abs(a(xo)) > delta))
            chk = 1;
        end
        if chk == 0
            canflag(ctr_1) = 0;
        elseif chk == 1
            canflag(ctr_1) = 1;
        end
        ctr_1 = ctr_1 + 1;
    end
    if sum(canflag) == 0
        pzvec(ctr_2) = a(xo);
        ctr_2 = ctr_2 + 1;
    end
end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2021国产精品久久精品| 一区二区三区91| 亚洲精品一线二线三线无人区| 欧美日韩高清在线| 欧美色窝79yyyycom| 欧美在线免费视屏| 欧美三级日韩三级国产三级| 欧美日韩精品欧美日韩精品| 欧美精选在线播放| 91麻豆精品久久久久蜜臀| 欧美一卡二卡在线| 日韩免费电影网站| 精品久久一区二区| 久久精品一区二区三区不卡 | 亚洲影视在线播放| 亚洲综合一区二区精品导航| 亚洲午夜久久久久久久久电影网| 亚洲国产另类精品专区| 日本午夜精品一区二区三区电影| 久久www免费人成看片高清| 紧缚奴在线一区二区三区| 国产资源在线一区| 成人午夜在线播放| 99久精品国产| 欧美三级电影一区| 日韩欧美在线观看一区二区三区| 久久久久久久久久久久电影 | 狠狠色狠狠色合久久伊人| 国产在线精品免费av| 粉嫩蜜臀av国产精品网站| 92国产精品观看| 99视频超级精品| 91高清在线观看| 日韩欧美亚洲国产另类 | 亚洲国产日韩a在线播放| 日韩国产在线观看| 国产suv精品一区二区883| 在线观看日韩电影| 精品福利av导航| 亚洲三级理论片| 欧美a一区二区| 大尺度一区二区| 正在播放亚洲一区| 国产精品夫妻自拍| 天堂久久一区二区三区| 成人晚上爱看视频| 欧美一区二区三区不卡| 国产精品日韩成人| 日本成人在线网站| 91网站黄www| 欧美电视剧在线观看完整版| 亚洲摸摸操操av| 国产一区91精品张津瑜| 欧美亚洲高清一区| 久久久久久久久蜜桃| 亚洲一区二区视频在线| 国产黑丝在线一区二区三区| 欧美日韩一级黄| 1000部国产精品成人观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 处破女av一区二区| 欧美成人精品二区三区99精品| 亚洲精品视频在线观看免费| 国产激情一区二区三区四区| 欧美一区二区三区四区在线观看| 自拍偷拍亚洲欧美日韩| 国产盗摄一区二区| 日韩欧美专区在线| 香港成人在线视频| 97se亚洲国产综合自在线观| 久久新电视剧免费观看| 日日噜噜夜夜狠狠视频欧美人| 91在线云播放| 国产精品―色哟哟| 国产一区二区日韩精品| 欧美一区二区三级| 一区二区久久久久久| 不卡高清视频专区| 国产日韩欧美不卡在线| 精品一区二区三区免费毛片爱| 欧美日本在线一区| 亚洲资源中文字幕| 91免费小视频| 日韩一区在线播放| 成人污视频在线观看| 国产日韩欧美精品一区| 国产美女视频一区| 久久综合久久久久88| 久久av资源站| 日韩视频永久免费| 免费三级欧美电影| 欧美另类z0zxhd电影| 一区二区三区四区在线播放| 99国产麻豆精品| 中文字幕一区二区在线播放| 国产v综合v亚洲欧| 日本一区二区三区dvd视频在线| 国产在线精品免费| 久久伊99综合婷婷久久伊| 久色婷婷小香蕉久久| 欧美成人在线直播| 美女精品一区二区| 欧美成人精品高清在线播放| 久久99国产精品免费| 亚洲人成精品久久久久| 成人美女在线观看| 国产精品美女久久久久久久久 | 91久久线看在观草草青青| 1000部国产精品成人观看| 91免费版在线看| 亚洲色图制服诱惑| 在线免费观看一区| 图片区小说区区亚洲影院| 欧美一区二区三区人| 美女精品自拍一二三四| 精品成人a区在线观看| 国产一区二区三区久久久| 中文天堂在线一区| 色国产综合视频| 亚洲成a人v欧美综合天堂| 7777精品伊人久久久大香线蕉的| 男人的天堂久久精品| 久久青草欧美一区二区三区| 国产成人av福利| 亚洲视频电影在线| 欧美色成人综合| 毛片一区二区三区| 久久老女人爱爱| 97精品国产露脸对白| 亚洲成人你懂的| 精品国产伦一区二区三区观看方式 | 久久精品男人天堂av| 成人黄页在线观看| 亚洲一区在线观看免费观看电影高清| 欧美久久久久久久久中文字幕| 精品一区二区三区免费毛片爱 | 天天综合网 天天综合色| 日韩免费一区二区三区在线播放| 国产自产2019最新不卡| 亚洲美女一区二区三区| 555www色欧美视频| 国产成人在线视频播放| 一区二区三区免费网站| 日韩欧美一区二区免费| caoporn国产精品| 肉肉av福利一精品导航| 日本一区二区三区国色天香| 欧美日韩大陆一区二区| 国产成人午夜精品5599| 亚洲国产视频网站| 久久精品无码一区二区三区| 欧美日韩中文字幕一区二区| 国产精品99久久久久久有的能看| 亚洲国产一区二区三区青草影视| 欧美精品一区二区三区蜜臀| 色av一区二区| 国产成人在线网站| 日本一不卡视频| 亚洲靠逼com| 国产色产综合色产在线视频| 欧美性大战久久久| 懂色av噜噜一区二区三区av| 天堂影院一区二区| 亚洲欧洲精品一区二区三区| 日韩欧美在线1卡| 欧美在线影院一区二区| 成人性生交大片免费看在线播放 | 国产一区日韩二区欧美三区| 亚洲综合久久av| 中文字幕欧美激情一区| 日韩午夜激情免费电影| 欧美自拍偷拍一区| 成人免费观看av| 九色综合狠狠综合久久| 亚洲国产aⅴ成人精品无吗| 国产精品久久久久久久久免费相片| 日韩午夜激情av| 欧美在线免费观看视频| av动漫一区二区| 国产成人综合在线观看| 日韩高清国产一区在线| 亚洲免费观看高清完整版在线观看熊 | 91在线精品一区二区| 国产美女娇喘av呻吟久久| 蜜桃视频一区二区三区| 亚洲一区二区三区精品在线| 国产精品久久福利| 国产日产精品一区| 精品成人在线观看| 日韩一区二区在线看片| 欧美精品18+| 91麻豆精品国产91久久久久久久久 | 亚洲超丰满肉感bbw| 亚洲免费观看高清完整版在线观看 | 国产精品主播直播| 久久国产精品一区二区| 美女网站色91| 蜜臀久久久99精品久久久久久| 婷婷综合五月天| 亚洲成人av免费|