Matlab仿真
误差频谱仿真:
N=14 M=4 l=8 k=1
程序:
clear;
Fs =1;%采样频率1MHz
M=4;%截取累加器的高M位;
N = 14;%累加器的位数;
l=8;
k=1;
K=2^l*(2*k+1);
L=2^(N-M-l);
pe= 100000;
n=1:pe;
pp=pe+1;%总的采样点数
add_y=(n*K)/2^N;
error=(round(n*(2*k+1))/L)/(2^M);
NFFT = 2^nextpow2(pp);%设定频谱分析点数
f = Fs/2*linspace(0,1,NFFT/2+1);% 只显示 0?Fs/2 的频率
rom_y=sin(2*pi*error);%有相位截断误差
Y = fft(rom_y,NFFT)/pp;% NFFT 点的 FFT 变换
value_Y = abs(Y(1:NFFT/2+1));% 求 FFT 变换值的绝对值
DB_Y = 20*log10(value_Y);% 求功率的分贝
plot(f,value_Y); %绘制频谱图,只有相位截断误差
axis([0 1 0 0.5]);
N=14 M=4 l=7 k=4
程序:
clear;
Fs =1;%采样频率1MHz
M=4;%截取累加器的高M位;
N=14;%累加器的位数;
l=7;
k=4;
K=2^l*(2*k+1);%频率控制字
L=2^(N-M-l);
pe= 100000;
n=1:pe;
pp=pe+1;%总的采样点数
add_y=(n*K)/2^N;
error=(round(n*(2*k+1))/L)/(2^M);
NFFT = 2^nextpow2(pp);%设定频谱分析点数
f = Fs/2*linspace(0,1,NFFT/2+1);% 只显示 0?Fs/2 的频率
rom_y=sin(2*pi*error);%有相位截断误差
Y = fft(rom_y,NFFT)/pp;% NFFT 点的 FFT 变换
value_Y = abs(Y(1:NFFT/2+1));% 求 FFT 变换值的绝对值
DB_Y = 20*log10(value_Y);% 求功率的分贝
plot(f,value_Y); %绘制频谱图,只有相位截断误差
axis([0 1 0 0.5]);%包括坐标轴范围,axis([xmin xmax ymin ymax])
N=14 M=4 l=9 k=0
程序:
clear;
Fs =1;%采样频率1MHz
M=4;%截取累加器的高M位;
N = 14;%累加器的位数;
l=9;
k=0;%频率控制字,即累加的步长;
K=2^l*(2*k+1);
L=2^(N-M-l);
m=1:L-1
pe= 100000;
n=1:pe;
pp=pe+1;%总的采样点数
error=(2*m*pi)/2^(N-l);
NFFT = 2^nextpow2(pp);%设定频谱分析点数
f = Fs/2*linspace(0,1,NFFT/2+1);% 只显示 0?Fs/2 的频率
rom_y=sin(2*pi*error);%有相位截断误差
Y = fft(rom_y,NFFT)/pp;% NFFT 点的 FFT 变换
value_Y = abs(Y(1:NFFT/2+1));% 求 FFT 变换值的绝对值
DB_Y = 20*log10(value_Y);% 求功率的分贝
plot(f,value_Y); %绘制频谱图 没有幅度量化误差,只有相位截断误差
axis([0 1 0 0.5]);
N=14 M=5 l=10 k=0
程序:
clear;
Fs =1;%采样频率1MHz
M=5;%截取累加器的高M位;
N = 14;%累加器的位数;
l=10;
k=0;%频率控制字,即累加的步长;
K=2^l*(2*k+1);
L=2^(N-M-l);
pe= 100000;
n=1:pe;
pp=pe+1;%总的采样点数
add_y=(n*K)/2^N;
NFFT = 2^nextpow2(pp);%设定频谱分析点数
f = Fs/2*linspace(0,1,NFFT/2+1);% 只显示 0?Fs/2 的频率
rom_y=sin(2*pi*add_y);%有相位截断误差
Y = fft(rom_y,NFFT)/pp;% NFFT 点的 FFT 变换
value_Y = abs(Y(1:NFFT/2+1));% 求 FFT 变换值的绝对值
DB_Y = 20*log10(value_Y);% 求功率的分贝
plot(f,value_Y); %绘制频谱图