matlab 声卡输出,请问高手关于matlab控制声卡输出的问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

请问高手,怎么我采样之后经声卡输出在示波器里看到的波形和采样滤波后的信号不一样呢?请高手帮忙

不知道怎么把采样滤波后的信号原样输出来,谢谢。

程序输出部分有问题吗?

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值