MATLAB实例及自我思考(1)

%采样频率的问题没有很好的解决,
%向量乘以一个常数的问题
%函数freqz(),各种形式
%wn是什么?
%[n,wn]=buttord(wap,was,rp,rs,'s');[B,A]=butter(n,wn,'s');
%很显然对x进行了2048点傅里叶变换,实质上要进行length(x)点变换,丢失了大量数据
%频谱横轴由 f=(Fs/2048)*[1:1024];控制,仅仅显示了前1024组数据而不是整个音频频谱
%此处显示仅显示了频谱前1024组数据而不是整个音频频谱
%若显示整个音频频谱 plot(f(1:length(x)),abs(y(1:length(x))));
%若显示前100组频谱 plot(f(1:100),abs(y(1:100)));


%信号
[x,Fs]=wavread('1');
t=(0:length(x)-1)/Fs;%抽样点数除以抽样频率,得到显示时间
y=fft(x,2048);   %很显然对x进行了2048点傅里叶变换,实质上要进行length(x)点变换,丢失了大量数据
f=(Fs/2048)*[1:1024];
subplot(211);
plot(t,x);
subplot(212);
plot(f,abs(y(1:1024)));%此处显示仅显示了频谱前1024组数据而不是整个音频频谱


                       %若显示整个音频频谱 plot(f(1:length(x)),abs(y(1:length(x))));
% sound(x,Fs);
% pause(5);
no=sin(2*pi*3000*t);%频率为3000HZ的信号,no大小和t大小一样
x1=no(1:length(x))+x(1:length(x));
figure;
subplot(211)
plot(t,x1);
y1=fft(x1,2048);
subplot(212);
plot(f,abs(y1(1:1024)));
% sound(x1,Fs);
% pause(5);
%巴特沃斯低通滤波器
fp=2500;fs=2800;rp=1;rs=12;
wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;%错误书写当都写成fs时候,得到的参数n为inf,而wn则大于1
wap=2*tan(wp/2);was=2*tan(ws/2);
[n,wn]=buttord(wap,was,rp,rs,'s');
[B,A]=butter(n,wn,'s');
[b,a]=bilinear(B,A,1);
[h,w]=freqz(b,a,1024,Fs);
figure;
subplot(211);
plot(w,(abs(h)));title('滤波器幅频响应');
subplot(212);
plot(w,angle(h));title('滤波器相频响应');
% 滤波
x2=filter(b,a,x1);
figure
subplot(211)
plot(t,x2);
title('滤波后的信号');
y2=fft(x2,2048);
subplot(212);
plot(f(1:1024),abs(y2(1:1024)));
title('滤波后信号频谱');
sound(x2,Fs);
pause(5);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值