运行一个加噪语音一阶滞后滤波的程序,matlab 中值滤波一直是busy状态,不出结果

加噪语音滤波处理_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
加噪语音滤波处理
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看: 1767|回复: 11|关注: 0
我的malab程序为什么一直运行不出结果啊,是太麻烦了吗?
<h1 style="color:# 麦片财富积分
新手, 积分 7, 距离下一级还需 43 积分
syms t real
a=a0+0.1*t;
OMB=[0 0 H].';
T11=cos(a)*cos(b)*cos(c-a)-sin(a)*sin(c-a);
T12=-cos(a)*cos(b)*sin(c-a)-sin(a)*cos(c-a);
T13=cos(a)*sin(b);
T21=sin(a)*cos(b)*cos(c-a)+cos(a)*sin(c-a);
T22=-sin(a)*cos(b)*sin(c-a)+cos(a)*cos(c-a);
T23=sin(a)*sin(b);
T31=-sin(b)*cos(c-a);
T32=sin(b)*sin(c-a);
T33=cos(b);
T=[T11 T12 T13;T21 T22 T23;T31 T32 T33];
o2=T*[0 0 h].'+OMB;
o211=diff(o2,t,2);
m1=[r*cos(theta) r*sin(theta) h].';
m2=[r*cos(theta+(2*pi)/3) r*sin(theta+(2*pi)/3) h].';
m3=[r*cos(theta+(4*pi)/3) r*sin(theta+(4*pi)/3) h].';
M1=T*m1+OMB;
M2=T*m2+OMB;
M3=T*m3+OMB;
B1=[R 0 0].';
B2=[R*cos((2*pi)/3) R*sin((2*pi)/3) 0].';
B3=[R*cos((4*pi)/3) R*cos((4*pi)/3) 0].';
l1=T*m1+OMB-B1;
l2=T*m2+OMB-B2;
l3=T*m3+OMB-B3;
L1=sqrt(l1.'*l1);
L2=sqrt(l2.'*l2);
L3=sqrt(l3.'*l3);
w=[0.1*t 0 0].';
ww=[0.1 0 0 ].';
JC=[0.03 0 0;0 0.03 0;0 0 0.06];
JUC=[0.;0 0. 0 0.00002];
JDC=[0.02 0 0;0 0.02 0;0 0 0.0005];
l11=dot(cross(M1,u1),w);
l22=dot(cross(M2,u2),w);
l33=dot(cross(M3,u3),w);
l111=cross(ww,M1)+cross(w,cross(w,M1));
l222=cross(ww,M2)+cross(w,cross(w,M2));
l333=cross(ww,M3)+cross(w,cross(w,M3));
W1=(cross(u1,cross(w,M1)))/L1;
W2=(cross(u2,cross(w,M2)))/L2;
W3=(cross(u3,cross(w,M3)))/L3;
a1=(cross(u1,l111)-2*l11*W1)/L1;
a2=(cross(u2,l222)-2*l22*W2)/L2;
a3=(cross(u3,l333)-2*l33*W3)/L3;
ld1=(l1*LD1)/L1;
ld2=(l2*LD2)/L2;
ld3=(l3*LD3)/L3;
al1=cross(a1,ld1)+cross(W1,cross(W1,ld1));
al2=cross(a2,ld2)+cross(W2,cross(W2,ld2));
al3=cross(a3,ld3)+cross(W3,cross(W3,ld3));
LU1=(L1-LD1)/2+LD1;
lu1=(l1*LU1)/L1;
LU2=(L2-LD2)/2+LD2;
lu2=(l2*LU2)/L2;
LU3=(L3-LD3)/2+LD3;
lu3=(l3*LU3)/L3;
au1=cross(a1,lu1)+cross(W1,cross(W1,lu1))+dot(l111,u1)+2*l11*cross(W1,u1);
au2=cross(a2,lu2)+cross(W2,cross(W2,lu2))+dot(l222,u2)+2*l22*cross(W2,u2);
au3=cross(a3,lu3)+cross(W3,cross(W3,lu3))+dot(l333,u3)+2*l33*cross(W3,u3);
e1=[1 0 0].';
e2=[0 1 0].';
e3=[0 0 1].';
x1=[0 0 0].';
x2=[0 0 0].';
x3=[0 0 0].';
Q=[u1 u2 u3 e1 e2 e3;cross(M1,u1) cross(M2,u2) cross(M3,u3) x1 x2 x3];
D1=cross(u1,JUC*a1+cross(W1,(JUC*W1))+JDC*a1+cross(W1,(JDC*W1))+cross((mu1*lu1),(l111-g))+cross((ml1*ld1),(l111-g)));
D2=cross(u2,JUC*a2+cross(W2,(JUC*W2))+JDC*a2+cross(W2,(JDC*W2))+cross((mu2*lu2),(l222-g))+cross((ml2*ld2),(l222-g)));
D3=cross(u3,JUC*a3+cross(W3,(JUC*W3))+JDC*a3+cross(W3,(JDC*W3))+cross((mu3*lu3),(l333-g))+cross((ml3*ld3),(l333-g)));
Z=[mu1*dot((au1-g),u1)*u1+mu2*dot((au2-g),u2)*u2+mu3*dot((au3-g),u3)*u3-D1/L1-D2/L2-D3/L3-mp*(g-o211) mu1*dot((au1-g),u1)*(cross(M1,u1))+mu2*dot((au2-g),u2)*(cross(M2,u2))+mu3*dot((au3-g),u3)*(cross(M3,u3))+JC*ww+cross(w,JC*w)-cross(M1,D1/L1)-cross(M2,D2/L2)-cross(M3,D3/L3)-cross(mp*o2,(g-o211))].';
这是程序,我想得到Z,他前面的都能运行出来,是为什么呢?求好心人帮忙解答一下。
<h1 style="color:# 麦片财富积分
一直busy,是怎么回事呢?
<h1 style="color:# 麦片财富积分
...我试了下你的程序 结果超长 被系统自动截断了 能不能把输出结果改短点?
<h1 style="color:# 麦片财富积分
刚又试了一下,单单是最后一步中的dot((au1-g),u1)*u1,就一直运行不出来,为什么呢?
<h1 style="color:# 麦片财富积分
...我试了下你的程序 结果超长 被系统自动截断了 能不能把输出结果改短点? ...
不能呀,没有改正的办法吗?
<h1 style="color:# 麦片财富积分
...我试了下你的程序 结果超长 被系统自动截断了 能不能把输出结果改短点? ...
这个dot((au1-g),u1)*u1是一定要算的,为啥这么麻烦
<h1 style="color:# 麦片财富积分
、、、、、、、、、、、、、、、:Q
<h1 style="color:# 麦片财富积分
你的这个结果已经超过了25000个字符了你确定这种结果是正确的么?
<h1 style="color:# 麦片财富积分
你的这个结果已经超过了25000个字符了你确定这种结果是正确的么?
是正确的啊,就是麻烦了点,公式就是这么算的啊。谢谢你的回答
<h1 style="color:# 麦片财富积分
|此回复为最佳答案
这个结果显示不了的 太长了 不过应该能算 我这R2014a可以算出来但是显示不全
站长推荐 /2
Powered by查看: 6588|回复: 5|关注: 0
matlab运行就一直busy,不知道是在运行还是有错误?
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
function dudt=changode(t,u)
dudt=zeros(8,1);
Pe=4.137*10^9*exp(-20474/T);
dudt(1)=4.85*10^6*exp(-201.47*10^3/R/T)/(1+u(2)/2.25/10^6/exp(178*1000/R/T)/u(6));
dudt(2)=2.2*10^9*exp(-109/R/T)*u(2)*u(7);
dudt(3)=2.78*10^3*exp(-1210/T)*(u(3)*u(6)-u(4)*u(2)/0.265/exp(3958/T));
dudt(4)=0.55*10^10*exp(-288.42*10^3/R/T)/(1+u(3)/5.86/1000/exp(112.86*10^3/R/T)/u(4));
dudt(5)=3.3*10^10*exp(-240*1000/R/T)*u(5)^1.7*u(2)^(-0.8);
dudt(6)=2.6*10^11*exp(-126/R/T)*u(3)*u(7)^0.5*u(6)^0.5;
dudt(7)=1/1.5*2.8*10^9*exp(-203/R/T)*u(5)^(-0.3)*u(7)^1.3;
dudt(8)=0.5*k0*exp(-(163-158.6*u(4)*R*T)/R/T)*(1-u(8))*(-log(1-u(8))*2.3)^(-1)*(u(4)*R*T-Pe)^0.1;
function changpingpin
u0=[0.1;0.1;0.1;0.1;0.1;0.1;0.1;0.1];
tspan=[0,1];
[t,u]=ode45(@donglixuefangcheng,tspan,u0);
plot(t,u(:,1),t,u(:,2),t,u(:,3),t,u(:,4));
legend('u(1)','u(2)','u(3)');
xlabel('t');
ylabel('u');
这是我编的程序,一运行下面的文件就busy,CPU占了一部分,但是好久都不出结果,不知道是在运行还是有错误呢?
按ctrl+c后出现的错误是这个,Error in ==& ode45 at 467
& && && && && && && && && && && && && && && && && && & idx = oldnout+1:& && &&&
& && && && && && && && && && && && && && && & Error in ==& changpingpin at 4
& && && && && && && && && && && && && && && & [t,u]=ode45(@donglixuefangcheng,tspan,u0);
有影响吗?该怎么修改呢?麻烦高手帮忙指教一下!毕业要用的啊!!!
<h1 style="color:# 麦片财富积分
先算头几个点上的值试一试,如果第一个点都算不出来,肯定程序错了
<h1 style="color:# 麦片财富积分
有可能是死循环,可以把非核心程序去掉以简化程序仔细查看
<h1 style="color:# 麦片财富积分
有没有高手帮忙查查看呢?菜鸟级的,但是要准备毕业。只是把方程换了一下,就可以出结果了,程序应该是没有问题吧?会不会是不收敛呢?如果是那就是方程的问题吧?有这个可能吗?
<h1 style="color:# 麦片财富积分
回复 2# chen_li777 的帖子
我怀疑是不收敛,因为我把方程换了一下就出结果了。这样是不是证明方法没有错误呢?如果方程的问题就要调整了吧?
<h1 style="color:# 麦片财富积分
应该是不收敛吧&&我也遇到这样的问题呢
站长推荐 /2
Powered by&1、设计原理
  设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。
&2、设计内容:
  以Matlab实现语音信号的低通滤波器设计为例:   
(1)语音信号的采集&&& 利用Windows下的录音机,录制一段自己的话音,时间在1s内。然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用,我们很快理解了采样频率、采样位数等概念。
  这里我直接采用了一段现成的.wav格式的语音信号。
(2)语音信号的频谱分析&&& 首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
程序如下:
& fs=32768; %语音信号采样频率为32768,即2^15
& x1=wavread('qq.wav'); %读取语音信号的数据,赋给变量x1
& sound(x1,32768); %播放语音信号
& y1=fft(x1,1024);& %对信号做1024点FFT变换
& f=fs*(0:511)/1024;
& figure(1);
& plot(x1)& %做原始语音信号的时域图形
& title('原始语音信号');xlabel('time n');ylabel('fuzhi n');
& figure(2);freqz(x1) %绘制原始语音信号的频率响应图
& title('频率响应图')
& figure(3);subplot(2,1,1);
& plot(abs(y1(1:512))) %做原始语音信号的FFT频谱图
& title('原始语音信号FFT频谱');
& subplot(2,1,2);
& plot(f,abs(y1(1:512)));
& title('原始语音信号频谱')
& xlabel('Hz');ylabel('fuzhi');
波形如下:
  注意:原始语言信号FFT频谱和原始语言信号频谱的区别是:前者是频率为1递增的频谱,而后者是以f=fs*(0:511)/1024递增;另外,后者是在&不小于原始信号的频率(采样定理)&上完全展开的频谱。
(3)给原始的语音信号加上一个高频余弦噪声,频率为5kHz。画出加噪后的语音信号时域和频谱图,与原始信号对比,可以很明显的看出区别。&&&
程序如下:
%给原始的语音信号加上一个高频余弦噪声,频率为5kHz。画出加噪后的语音信号时域和频谱图,与原始信号对比,可以很明显的看出区别。
fs=32768;x1=wavread('qq.wav');f=fs*(0:511)/1024;t=0:1/32768:(size(x1)-1)/32768; %将所加噪声信号的点数调整到与原始信号相同Au=0.03;d=[Au*cos(2*pi*5000*t)]';&& %噪声为5kHz的余弦信号x2=x1+d;sound(x2,32768);&&& %播放加噪声后的语音信号y2=fft(x2,1024);figure(1)plot(t,x2)title('加噪后的信号');xlabel('time n');ylabel('fuzhi n');figure(2)subplot(2,1,1);plot(f,abs(y1(1:512)));title('原始语音信号频谱');xlabel('Hz');ylabel('fuzhi');subplot(2,1,2);plot(f,abs(y2(1:512)));title('加噪后的信号频谱');xlabel('Hz');ylabel('fuzhi');
波形如下:
(4)双线性变换法设计Butterworth滤波器
程序如下:
fs=32768;x1=wavread('qq.wav');t=0:1/32768:(size(x1)-1)/32768;Au=0.03;d=[Au*cos(2*pi*10000*t)]';x2=x1+d;wp=0.25*ws=0.3*Rp=1;Rs=15;Fs=32768;Ts=1/Fs;wp1=2/Ts*tan(wp/2);&&&&&&&&&&&& %将模拟指标转换成数字指标ws1=2/Ts*tan(ws/2); [N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数[Z,P,K]=buttap(N);&&&&&&&&&&&&&&&& %创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);&& [bz,az]=bilinear(b,a,Fs);&&&&&&&&& %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az);&&&&&&&&&&&&&&& %绘制频率响应曲线figure(1)plot(W*Fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('Butterworth')f1=filter(bz,az,x2);figure(2)subplot(2,1,1)plot(t,x2)&&&&&&&&&&&&&&& %画出滤波前的时域图title('滤波前的时域波形');subplot(2,1,2)plot(t,f1);&&&&&&&&&&&&&& %画出滤波后的时域图title('滤波后的时域波形');sound(f1,32768);&&&&&&& %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x2,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));&&&&&&&&& %画出滤波前的频谱图title('滤波前的频谱')xlabel('Hz');ylabel('fuzhi');subplot(2,1,2)F1=plot(f,abs(F0(1:512)));&&&& %画出滤波后的频谱图title('滤波后的频谱')xlabel('Hz');ylabel('fuzhi');
波形如下:
(5)窗函数法设计滤波器:
fs=32768;x1=wavread('qq.wav');t=0:1/32768:(size(x1)-1)/32768;Au=0.03;d=[Au*cos(2*pi*10000*t)]';x2=x1+d;wp=0.25*ws=0.3*wdelta=ws-N=ceil(6.6*pi/wdelta);&&&&&&&&&&&&&&&&& %取整wn=(0.2+0.3)*pi/2;b=fir1(N,wn/pi,hamming(N+1));&&&&&&&&&& %选择窗函数,并归一化截止频率figure(1)freqz(b,1,512)f2=filter(bz,az,x2)figure(2)subplot(2,1,1)plot(t,x2)title('滤波前的时域波形');subplot(2,1,2)plot(t,f2);title('滤波后的时域波形');sound(f2,32768);&&&&&&&&&&&&&& %播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x2,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('滤波前的频谱')xlabel('Hz');ylabel('fuzhi');subplot(2,1,2)F2=plot(f,abs(F0(1:512)));title('滤波后的频谱')xlabel('Hz');ylabel('fuzhi');
波形如下:
&(6)回放语音信号  在Matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits),x为要播放的音频信号,fs采样频率,bits采样位。在运行Matlab程序时,可以听到回放的声音,经过比较,明显感觉滤波前后的声音有变化。
  遇到的问题:出现错误提示:
  ??? Error using ==& wavread
  Error using ==& wavread
  Data compression format (IMA ADPCM) is not supported.
&  解决办法:wave格式的音频分为PCM和IMA ADPCM两种格式,Matlab中用waveread函数做音频处理时,只能对PCM格式的.wav音频进行处理,因此需要将要处理的格式事先转换成PCM格式的.wav音频。可采用Adensoft Audio MP3 Converter音频转换工具进行转换。
PS:本篇文章的算法和图片已上传附件。&音频信号处理&
阅读(...) 评论()查看: 2448|回复: 6|关注: 0
MATLAB一直处于busy状态
<h1 style="color:# 麦片财富积分
新手, 积分 7, 距离下一级还需 43 积分
function main
& & clear all
& & close all
& & A=[-1 0 0;1 0 0;0 -1 0;0 1 0;0 0 -1;0 0 1];b=[-0.03;0.05;-1;4.5;-20;50];
& & Aeq=[];beq=[];lb=[];ub=[];x0=[0.03;2;45];
& & fun = @(x) 61.7*x(1)^2*(1+0.26*log(x(2)))*(0.14*sin(x(3))+2*cos(x(3)))*sin(x(3))/x(2)+291.5*x(1)*sin(x(3))*sqrt(x(1)^2+x(2)^2+2*x(1)*x(2)*cos(x(3)))/x(2)+1.48*x(1)*(x(2)*cos(x(3))+x(1))/(x(2)*sin(x(3)))+18.8*x(1)
& & opts= optimset('Algorithm','active-set');
& &&&problem=createOptimProblem('fmincon','objective',...
& && && &fun,'x0',x0,'Aineq',A,'bineq',b,'nonlcon',@mycon,'options',opts);
& &&&gs = GlobalSearch
& & [x,fval] = run(gs,problem);
function[c,ceq]=mycon(x)
& &c(1)=0.002-0.304*x(1)*sin(x(3))/x(2);
& &c(2)=(0.304*x(1)*sin(x(3)))/x(2)-0.0080;
& & ceq=[];
如题,哪位大神给指点哈
帖子最佳答案
关注者: 382
你运行了多久?
大概什么配置?
<h1 style="color:# 麦片财富积分
你运行了多久?
大概什么配置?
电脑配置应该是没问题,2G内存,1G显卡,我试了试其它算法,比如,sqp,他不会一直处于busy状态,但没出现结果,请版主指点看哈,下面是改sqp算法的程序:
function main
& & clear all
& & close all
& & A=[-1 0 0;1 0 0;0 -1 0;0 1 0;0 0 -1;0 0 1];b=[-0.03;0.05;-1;4.5;-20;50];
& & Aeq=[];beq=[];lb=[];ub=[];x0=[0.03;2;45];
& & fun = @(x) 61.7*x(1)^2*(1+0.26*log(x(2)))*(0.14*sin(x(3))+2*cos(x(3)))*sin(x(3))/x(2)+291.5*x(1)*sin(x(3))*sqrt(x(1)^2+x(2)^2+2*x(1)*x(2)*cos(x(3)))/x(2)+1.48*x(1)*(x(2)*cos(x(3))+x(1))/(x(2)*sin(x(3)))+18.8*x(1)
& & opts= optimset('Algorithm','sqp');
& &&&problem=createOptimProblem('fmincon','objective',...
& && && &fun,'x0',x0,'Aineq',A,'bineq',b,'nonlcon',@mycon,'options',opts);
& &&&gs = GlobalSearch
& & [x,fval] = run(gs,problem);
function[c,ceq]=mycon(x)
& &c(1)=0.002-0.304*x(1)*sin(x(3))/x(2);
& &c(2)=(0.304*x(1)*sin(x(3)))/x(2)-0.0080;
& & ceq=[];
<h1 style="color:# 麦片财富积分
电脑配置应该是没问题,2G内存,1G显卡,我试了试其它算法,比如,sqp,他不会一直处于busy状态,但没出现 ...
GlobalSearch stopped because it analyzed all the trial points.
6 out of 13 local solver runs converged with a positive local solver exit flag.
这是Matlab出现的结果,版主帮帮忙
帖子最佳答案
关注者: 382
电脑配置应该是没问题,2G内存,1G显卡,我试了试其它算法,比如,sqp,他不会一直处于busy状态,但没出现 ...
sgp 和 interior-point 都可以求出你这个问题的结果。试试 interior-point 吧
function main
& & clear all
& & close all
& & A=[-1 0 0;1 0 0;0 -1 0;0 1 0;0 0 -1;0 0 1];b=[-0.03;0.05;-1;4.5;-20;50];
& & Aeq=[];beq=[];lb=[];ub=[];x0=[0.03;2;45];
& & fun = @(x) 61.7*x(1)^2*(1+0.26*log(x(2)))*(0.14*sin(x(3))+2*cos(x(3)))*sin(x(3))/x(2)+291.5*x(1)*sin(x(3))*sqrt(x(1)^2+x(2)^2+2*x(1)*x(2)*cos(x(3)))/x(2)+1.48*x(1)*(x(2)*cos(x(3))+x(1))/(x(2)*sin(x(3)))+18.8*x(1)
%& &&&opts = optimset('Algorithm','sqp');
& & opts = optimset('Algorithm','interior-point');
& &&&problem=createOptimProblem('fmincon','objective',...
& && && &fun,'x0',x0,'Aineq',A,'bineq',b,'nonlcon',@mycon,'options',opts);
& &&&gs = GlobalSearch
& & [x,fval] = run(gs,problem)
function[c,ceq]=mycon(x)
& &c(1)=0.002-0.304*x(1)*sin(x(3))/x(2);
& &c(2)=(0.304*x(1)*sin(x(3)))/x(2)-0.0080;
& & ceq=[];
如果要试 sgp,就屏蔽interior-point的opts语句,打开 sgp对应opts语句
<h1 style="color:# 麦片财富积分
sgp 和 interior-point 都可以求出你这个问题的结果。试试 interior-point 吧
function main
版主,没太明白你的意思。我从 opts = optimset('Algorithm','sqp')试过四种算法,但Matlab最后没有输出结果:比如 x1=? x2=? x3=?.
您运行出现结果了吗&&我这里没有显示结果,只是出现了如下
GlobalSearch stopped because it analyzed all the trial points.
5 out of 15 local solver runs converged with a positive local solver exit flag.
什么情况呢?
帖子最佳答案
关注者: 382
版主,没太明白你的意思。我从 opts = optimset('Algorithm','sqp')试过四种算法,但Matlab最后没有输出 ...
你运行的是我贴出的代码吗?你之所以得不到输出,是因为你用分号屏蔽了结果显示,你没看到我去掉了分号了吗 [x,fval] = run(gs,problem)
站长推荐 /2
Powered by

我要回帖

更多关于 matlab 中值滤波 的文章

 

随机推荐