matlab报错???

???FrequencymustbeascalarErrorin==>soundat36playsnd(y,fs,bits);Errorin==>Untitled12at... ??? Frequency must be a scalar

Error in ==> sound at 36
playsnd(y,fs,bits);
Error in ==> Untitled12 at 4
sound(x,fs); %对加载的语音信号进行回放
>>

fs=22050;
[x,fs,Nbits] =fopen('C:\Users\Administrator\Documents\无标题.wav') ;
t=0:1/22050:(length(x)-1)/22050;
sound(x,fs); %对加载的语音信号进行回放
figure(1)
plot(x) %做原始语音信号的时域图形
title('原始语音信号');
xlabel('time n');
ylabel('fuzhi n');
figure(2)
freqz(x) %绘制原始语音信号的频率响应图
title('频率响应图')
n=length(x); %求出语音信号的长度
y1=fft(x,n) ; %傅里叶变换
y2=fftshift(y1); %对频谱图进行平移
f=0:fs/n:fs*(n-1)/n; %得出频点
figure(3)
subplot(2,1,1);
plot(abs(y2)) %做原始语音信号的FFT频谱图
title('原始语音信号FFT频谱')
subplot(2,1,2);
plot(f,abs(y2)); %绘制原始语音信号的频谱图
title('原始语音信号频谱')

%加噪声
k=1:1:n; %定义k 值,噪声与原始语音长度一致
c1=10*sin(2*pi*5000*k); %噪声信号的函数
figure(4)
plot(k,c1)
title('噪声信号时域图'); %绘制噪声信号的时域波形图
figure(5)
freqz(c1) %绘制噪声信号的频率响应图
title('噪声信号频率响应图')
s=length(c1); %噪声信号的长度
xc=fft(c1,s); %对噪声信号进行频谱变换
xcc=fftshift(xc);
f=0:fs/s:fs*(s-1)/s;
figure(6) %绘制噪声语音的FFT频谱图
plot(f,abs(xcc))
title('噪声信号的频谱图');

%噪音与原始信号叠加
z=x'+c1;
y3=fft(z,s); %对叠加信号进行频谱变换
y4=fftshift(y3); %对频谱图平移
f=0:fs/s:fs*(s-1)/s; %得出频点
figure(7)
plot(f,abs(y4)); %绘出加噪语音频谱图
axis([0 8000 0 50]);
title('含噪语音信号的频谱');
figure(8)
subplot(2,1,1);
plot(f,abs(y2)) %做原始语音信号的FFT频谱图
title('原始语音信号FFT频谱')
subplot(2,1,2);
plot(f,abs(y4)) %做加噪语音信号的FFT频谱图
title('加噪语音信号频谱')
展开
 我来答
tianxiawulang
2012-11-23 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2574万
展开全部
把第2句改成:
[x,fs,Nbits] =wavread('C:\Users\Administrator\Documents\无标题.wav') ;
fopen应该不支持你写的这种读音频文件的调用格式吧?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式