%采样频率的问题没有很好的解决,
%向量乘以一个常数的问题
%函数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);
%向量乘以一个常数的问题
%函数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);