谱减法的MATLAB程序运行不出来,求高手帮忙啊!程序如下,错位如下

clear all; [speech,fs,nbits]=wavread('E:\work\1.wav'); %读入数据 winsize=256; %窗长 n=0.04; %噪声水平 size=length(speech); %语音长度 numofwin=floor(size/winsize);····%帧数 ham=hamming(winsize)'; %产生汉明窗 hamwin=zeros(1,size); %定义汉明窗的长度 enhanced=zeros(1,size); %定义增强语音的长度 x=speech'+n*randn(1,size);
figure(1);subplot(3,1,1);plot(speech);title('原始语音波形');xlabel('样点数');ylabel('幅度');axis([0 2.5*10^4-0.3 0.3]);subplot(3,1,2);plot(x);title('加噪语音波形');xlabel('样点数');ylabel('幅度');axis([0 2.5*10^4-0.3 0.3]);subplot(3,1,3);plot(enhanced);title('增强语音波形');xlabel('样点数');ylabel('幅度');axis([0 2.5*10^4-0.3 0.3]);

根据错误提示是x=speech'+n*randn(1,size);出错。出错原因是矩阵维度不匹配。n*randn(1,size)产生的是1行size列的矩阵,LZ你确定speech是size行1列的矩阵么?如果不是就不要转置。。。。追问

不要转置是指哪里?

追答

speech' 去掉',如果希望x是size行1列的矩阵的话,可以在x=speech+n*randn(1,size);后加x=x';

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-24
原始信号和噪声信号的维数不同造成两数据不可相加,而且数组的乘法请使用".*",不要使用*。
第2个回答  2013-03-25
需保证speeh‘和noisy两个数组的维数相同
相似回答