matlab中sound函数中取样频率变化了为什么声音也变了?
我写了一个程序用来尝试使用sound函数clcclearallFs=32768;%取样频率Fs1=55000;%取样频率测试1t=0:1/Fs:0.25;fr=697;y...
我写了一个程序用来尝试使用sound函数
clc
clear all
Fs=32768;%取样频率
Fs1=55000;%取样频率测试1
t=0:1/Fs:0.25;
fr=697;
y=sin(2*pi*fr*t);
sound(y,Fs1);%Fs1变换则声音变了
如果我sound函数是写sound(y,Fs),那么只要我Fs给得足够大,声音就一直是不变声调的。但是如果我用Fs1,我给的Fs1的值不同声音也不同了。Fs1大,就声调高。Fs1不是取样频率吗?只要取得足够大就不会失真,应该和原来的声音应该没什么关系才对啊。为什么会这样?谢谢! 展开
clc
clear all
Fs=32768;%取样频率
Fs1=55000;%取样频率测试1
t=0:1/Fs:0.25;
fr=697;
y=sin(2*pi*fr*t);
sound(y,Fs1);%Fs1变换则声音变了
如果我sound函数是写sound(y,Fs),那么只要我Fs给得足够大,声音就一直是不变声调的。但是如果我用Fs1,我给的Fs1的值不同声音也不同了。Fs1大,就声调高。Fs1不是取样频率吗?只要取得足够大就不会失真,应该和原来的声音应该没什么关系才对啊。为什么会这样?谢谢! 展开
展开全部
y相当于是你在0.25s录好的声音,在调用sound函数时你要用Fs作为参数,相当于正常速度录正常速度放,若改成Fs1相当于正常速度录而快速播放,反之当选择比Fs小的数时,相当于慢放,因此录放速度不同都会产生变调,它们直接控制声卡的输出速度。
追答
1、快播是因为声卡每秒输出的数据点数多了,你可以在命令窗口依次执行sound(y,Fs*2) sound(y,Fs) sound(y,Fs/2) sound(y,Fs/20)测试一下声音持续的时间和声效。
当然声卡在输出声音时已经做了DAC,即其中包含数据内插和滤波,变调有滤波的影响。
2、若对一个已知波形进行采样,提高采样率,单位时间内得到的样点数肯定会增加,所以黑点会加密
clc
clear all
Fs=32768;%取样频率
Fs1=55000;%取样频率测试1
t=0:1/Fs:0.25;
fr=697;
y=sin(2*pi*fr*t);
t1=0:1/Fs1:0.25;
fr=697;
y1=sin(2*pi*fr*t1);
figure
subplot(211)
stem(t,y,'.')
hold on
plot(t,y,'r-.')
subplot(212)
stem(t1,y1,'.')
hold on
plot(t1,y1,'r-.')
执行完上述代码后,在执行下面的代码
subplot(211)
axis([0 0.0015 -1 1])
subplot(212)
axis([0 0.0015 -1 1])
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询