《DSP using MATLAB》示例Example 6.28

代码:

% The following 3 lines produce filter coefficients shown in Table 6.1
wp = [0.35, 0.65]; ws = [0.25, 0.75]; Rp = 1; As = 50;
[N, wn] = ellipord(wp, ws, Rp, As);
[b, a] = ellip(N, Rp, As, wn);
w = [0:500]*pi/500; H = freqz(b, a, w);
magH = abs(H); magHdb = 20*log10(magH);

% 16-bit word-length quantization
N1 = 15; [bahat, L1, B1] = QCoeff([b; a], N1);
TITLE1 = sprintf(‘%i-bits (1+%i+%i) ‘, N1+1, L1, B1);
bhat1 = bahat(1, :); ahat1 = bahat(2, :);
Hhat1 = freqz(bhat1, ahat1, w); magHhat1 = abs(Hhat1);
magHhat1db = 20*log10(magHhat1); zhat1 = roots(bhat1);

% 8-bit word-length quantization
N2 = 7; [bahat, L2, B2] = QCoeff([b; a], N2);
TITLE2 = sprintf(‘%i-bits (1+%i+%i) ‘, N2+1, L2, B2);
bhat2 = bahat(1, :); ahat2 = bahat(2, :);
Hhat2 = freqz(bhat2, ahat2, w); magHhat2 = abs(Hhat2);
magHhat2db = 20*log10(magHhat2); zhat2 = roots(bhat2);

% Comparison of Magnitude Plots
Hf_1 = figure(‘paperunits‘, ‘inches‘, ‘paperposition‘, [0, 0, 6, 5], ‘NumberTitle‘, ‘off‘, ‘Name‘, ‘Exameple 6.28‘);
%figure(‘NumberTitle‘, ‘off‘, ‘Name‘, ‘Exameple 6.26a‘)
set(gcf,‘Color‘,‘white‘);

% Comparison of Log-Magnitude Response: 16 bits
subplot(2, 2, 1); plot(w/pi, magHdb, ‘g‘, ‘linewidth‘, 1.5); axis([0, 1, -80, 5]);
hold on; plot(w/pi, magHhat1db, ‘r‘, ‘linewidth‘, 1); hold off;
xlabel(‘Digital Frequency in \pi units‘, ‘fontsize‘, 10);
ylabel(‘Decibels‘, ‘fontsize‘, 10); grid on;
title([‘Log-mag Plot: ‘, TITLE1], ‘fontsize‘, 10, ‘fontweight‘, ‘bold‘);

% Comparison of Pole-Zero Plots: 16 bits
subplot(2, 2, 3); [HZ, HP, Hl] = zplane([b], [a]); axis([-2, 2, -2, 2]); hold on;
set(HZ, ‘color‘, ‘g‘, ‘linewidth‘, 1, ‘markersize‘, 4);
set(HP, ‘color‘, ‘g‘, ‘linewidth‘, 1, ‘markersize‘, 4);
plot(real(zhat1), imag(zhat1), ‘r+‘, ‘linewidth‘, 1); grid on;
title([‘PZ Plot: ‘ TITLE1], ‘fontsize‘, 10, ‘fontweight‘, ‘bold‘); hold off;

% Comparison of Log-Magnitude Response: 8 bits
subplot(2, 2, 2); plot(w/pi, magHdb, ‘g‘, ‘linewidth‘, 1.5); axis([0, 1, -80, 5]);
hold on; plot(w/pi, magHhat2db, ‘r‘, ‘linewidth‘, 1); hold off;
xlabel(‘Digital Frequency in \pi units‘, ‘fontsize‘, 10);
ylabel(‘Decibels‘, ‘fontsize‘, 10); grid on;
title([‘Log-mag Plot: ‘, TITLE2], ‘fontsize‘, 10, ‘fontweight‘, ‘bold‘);

% Comparison of Pole-Zero Plots: 8 bits
subplot(2, 2, 4); [HZ, HP, Hl] = zplane([b], [a]); axis([-2, 2, -2, 2]); hold on;
set(HZ, ‘color‘, ‘g‘, ‘linewidth‘, 1, ‘markersize‘, 4);
set(HP, ‘color‘, ‘g‘, ‘linewidth‘, 1, ‘markersize‘, 4);
plot(real(zhat2), imag(zhat2), ‘r+‘, ‘linewidth‘, 1); grid on;
title([‘PZ Plot: ‘ TITLE2], ‘fontsize‘, 10, ‘fontweight‘, ‘bold‘); hold off;

运行结果:

时间: 2024-10-21 12:36:33

《DSP using MATLAB》示例Example 6.28的相关文章

《DSP using MATLAB》Problem 7.28

又是一年五一节,朋友圈都是晒名山大川的,晒脑袋的,我这没钱的待在家里上网转转吧 频率采样法设计带通滤波器,过渡带中有一个样点 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output Info about this m-file fprintf('\n*******************************************************

DSP using MATLAB 示例Example3.21

代码: % Discrete-time Signal x1(n) % Ts = 0.0002; n = -25:1:25; nTs = n*Ts; Fs = 1/Ts; x = exp(-1000*abs(nTs)); Ts = 0.001; n = -5:1:5; nTs = n*Ts; Fs = 1/Ts; x = exp(-1000*abs(nTs)); % Analog Signal Dt = 0.00005; t = -0.005:Dt:0.005; xa = x * sinc(Fs*

DSP using MATLAB示例Example3.18

代码: % Analog Signal Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t)); % Continuous-time Fourier Transform Wmax = 2*pi*2000; K = 500; k = 0:1:K; % index array k for frequencies W = k*Wmax/K; % freqency between 0 and +pi, [0,pi] axis divided i

DSP using MATLAB 示例 Example3.19

代码: % Analog Signal Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t)); % Discrete-time Signal Ts = 0.0002; n = -25:1:25; x = exp(-1000*abs(n*Ts)); % Discrete-time Fourier Transform %Wmax = 2*pi*2000; K = 500; k = 0:1:K; w = pi*k/K; % index ar

DSP using MATLAB 示例 Example3.15

上代码: subplot(1,1,1); b = 1; a = [1, -0.8]; n = [0:100]; x = cos(0.05*pi*n); y = filter(b,a,x); figure('NumberTitle', 'off', 'Name', 'Input and Output sequence'); set(gcf,'Color','white'); subplot(2,1,1); stem(n,x); title('Input sequence'); xlabel('n'

DSP using MATlAB 示例Example2.10

上代码 % noise sequence 1 x = [3, 11, 7, 0, -1, 4, 2]; nx = [-3:3]; % given signal x(n) [y,ny] = sigshift(x,nx,2); % obtain x(n-2) set(gcf,'Color','white') subplot(2,1,1);stem(nx,x); title('sequence x(n)'); xlabel('n');ylabel('x(n)'); grid on subplot(2,

DSP using MATLAB 示例Example3.17

DSP using MATLAB示例Example3.6

代码: n = [-5:5]; x = (-0.9).^n; % x(n) = k = -200:200; w = (pi/100)*k; % [0,pi] axis divided into 101 points. X = x * (exp(-j*pi/100)) .^ (n'*k); magX = abs(X); angX = angle(X); realX = real(X); imagX = imag(X); set(gcf,'Color','white'); subplot(2,2,1

DSP using MATLAB 示例Example2.12

代码: b = [1]; a = [1, -0.9]; n = [-5:50]; h = impz(b,a,n); set(gcf,'Color','white'); %subplot(2,1,1); stem(n,h); title('Impulse Response'); xlabel('n'); ylabel('h(n)'); grid on; x = stepseq(0, -5, 50) - stepseq(10, -5, 50) y = filter(b, a, x); figure;

DSP using MATLAB 示例Example2.4

n = [0:10]; x = stepseq(0,0,10) - stepseq(10,0,10); [xe,xo,m] = evenodd(x,n); set(gcf,'Color',[1,1,1]) % 改变坐标外围背景颜色 stem(n,x); title('Rectangular Pulse'); xlabel('n'); ylabel('x(n)') ; axis([-10,10,0,1.2]) grid on figure set(gcf,'Color',[1,1,1]) stem