马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
%*******************************************************************%
%f—模拟信号的频率
%用来模拟 模拟信号的 数字信号的采样频率Fs
%过采样频率fs
%*******************************************************************%
f=100; Fs=10000; N=1024; % fft点数=取样总点数
Ts=1/Fs; % 取样时间间隔
T=N*Ts; % 取样总时间=取样总点数*取样时间间隔
n=0:N-1; t=n*Ts; wn=2*f/Fs; Xn=sin(2*f*pi*t)+randn(1,N);
figure(1)
subplot(221); plot(t,Xn); title('滤波前信号'); axis([0 T/2 min(Xn) max(Xn)]);
X=abs(fft(Xn,N)); Pxx=X.*conj(X)/N; f0=Fs*(0:N/2)/N;
subplot(222);
plot(f0(1:N/2+1),Pxx(1:N/2+1)); axis([0 Fs/10 min(Pxx) max(Pxx)]); grid; title('滤波前信号的频谱');
%滤波
[b,a]=butter(2,wn); y=filter(b,a,Xn);
subplot(223); plot(t,y);title('滤波后信号'); axis([0 T/2 -1 1]);
Y=abs(fft(y,N)); Pyy=Y.*conj(Y)/N;
subplot(224); plot(f0,Pyy(1:N/2+1)); grid
axis([0 Fs/10 min(Pyy) max(Pyy)]); title('滤波后信号的频谱');
%采样点数,间隔的计算
fs=200 %采样频率
deltaN=Fs/fs %采样间隔
Ns=N/deltaN
%采样
for i=1:Ns, xd(i)=Xn((i-1)*deltaN+1); end
figure(2)
subplot(4,1,1); stem(xd,'.'); title('采样后离散信号'); axis([1 Ns min(Xd) max(Xd)]);
t=0:1/fs:N-1/Fs; w1=2*pi*10; % 显示从-20*pi到20*pi频率范围内的频谱
K=1000; % 计算出2*1000+1个频率点的值
k=0:K; w=k*w1/K; XD=xd*exp(-j*t'*w);
figure
plot(w,XD); title('采样后离散信号的频谱');
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Error in ==> zibianchengxu at 71
XD=xd*exp(j*w*t);
就是想对一采样信号做频谱分析,然后观察过采样时的频谱,以及欠采样时频谱的重叠情况,怎么做都做不来了,各位大虾帮个忙啊,小弟感激不尽
[ 本帖最后由 ChaChing 于 2009-5-8 22:15 编辑 ] |