马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
请问高手,怎么我采样之后经声卡输出在示波器里看到的波形和采样滤波后的信号不一样呢?请高手帮忙
不知道怎么把采样滤波后的信号原样输出来,谢谢。
程序输出部分有问题吗?
ai = analoginput('winsound');
ch=addchannel(ai,1);
set(ai,'SampleRate',44100)
set(ai,'SamplesPerTrigger',44100*5);
start(ai)
[data,time] = getdata(ai);
delete(ai)
figure;
subplot(211),plot(time,data); %时域图
title('Time-Domain');
xlabel('time /s');ylabel('magnitude /V');
%cheby2型滤波
[b,a] = cheby2(9,20,300/22050);%设计9阶,带阻波纹20dB,不
%确定是从20开始,300/22050为归一化频率
[fil,zf]=filter(b,a,data); %zf为滤波器延迟
subplot(212),plot(time,fil);title('fitered signal');
xlabel('time /s');ylabel('magnitude /V');
%进行FFT变换并做频谱图
y=fft(data);%进行fft变换
mag=abs(y);%求幅值
mag1=20*log10(mag);
f=(0:length(y)-1)'*44100/length(y);%进行对应的频率转换
figure;
subplot(211);
plot(f(1:64),mag1(1:64));%做频谱图
%axis([0,150,0,500]);
xlabel('Frequency /Hz');
ylabel('Magnitude /dB');
title('Samples FFT N=128');
grid;
%绘制功率谱
sq=mag1.^2;
subplot(212);
plot(f(1:64),sq(1:64));
xlabel('Frequency(Hz)');
ylabel('Power Spec');
title('Spec');
grid;
%处理信号输出
ao = analogoutput('winsound');
addchannel(ao,1);
set(ao,'SampleRate',44100);
set(ao,'TriggerType','Manual')
putdata(ao,fil);
start(ao);
trigger(ao);
waittilstop(ao,6)
stop(ao);
delete(ao);
[ 本帖最后由 sigma665 于 2008-1-16 10:46 编辑 ] |