急求一段matlab程序

急求一段matlab程序,第1张

for j=1:6

variable_name=genvarname(['c',num2str(j)]); %生成变量名,c1, c2,c6

string=strcat(variable_name,'=sin(a',num2str(j),')cos(b',num2str(j),')'); %构造表达式字符串

eval(string); %再把这个表达式用eval执行

end

依次点开菜单:

“File”-->“import data" --> 选择你的excel文件 -->“Next”-->“Finish”。

然后在“Workspace”中会出现新的data变量,右键单击data --> Save as 。

哈哈!不知你如何想到用复小波进行DWT滴,目的是啥?matlab没有用复小波进行DWT滴分解和重构滴方法。用复小波进行DWT分解与重构滴研究目的一般有两种:

第一,复小波变换具有优于实小波滴平移不变性,对突变点的反应更加灵敏,可更加准确和清晰的表现信号的突变信息。在实际应用中也可用实小波滴SWT抑制消弱平移敏感性以达到类似滴效果。

第二,复小波与实小波相比除了不仅可提供幅值信息还有相位信息,而且还能提供多种复合信息,然而,复小波变换得到的小波系数为复数形式,构造它的完全重构滤波器非常困难,1998年,NG Kingsbury提出了对偶树(双树)复小波变换(Dual-tree Complex Wavelet Transform, DT CWT)理论,该变换满足完全重构条件,且保留了复小波变换的诸多优良特性:近似的平移不变性、良好的方向选择性(6个,±15°、±45°、±75°)、有限的冗余和高效的阶数,与此同时,它还具有完全重构特性。这玩意儿有国内学位论文,好像是图像方面滴,你可以查查。但貌似没啥具体代码和 *** 作性说明,也不知是不是正宗滴DT CWT,实际应用中相位信息滴解读在信号处理中一直不够直观,清晰和明确,如同FT中相位谱一直难以研究一样,做试探性研究尚可,实用性貌似不强。

所以完全不知你为啥要玩复小波滴分解和重构呦!不为实用只为与众不同,容易发文章吗!此种风气不可有啊,哇咔咔!

[YC,YS]=wavedec2(Y,2,'db1');

Y为要分解的图像矩阵,2为分解的层数,‘db1'为采用的小波基

返回两个矩阵YC和YS。Yh2=detcoef2('h',YC,YS,2);这是提取出图像2层分解后的水平分量,h改v是垂直分量,h该d是对角分量。细节分量用另外一个方法提取。

1装载信号

在MATLAB命令行中输入

load noisbloc

s=noisbloc(1:1024);

ls=length(s);

plot(s);

2完成信号的单尺度一维离散小波分解

采用db4基本小波分解信号

在命令窗口中输入

[cA1,cD1]=dwt(s,'db4');

这就产生了低频系数cA1和高频系数cD1。

可以通过whos命令查看cA1和cD1的长度:

whos

Name Size Bytes Class

cA1 1x515 4120 double array

cD1 1x515 4120 double array

ls 1x1 8 double array

noisbloc 1x1024 8192 double array

s 1x1024 8192 double array

Grand total is 3079 elements using 24632 bytes

3从系数中重构低频部分和高频部分

从第二步产生的系数cA1和cD1构造第一层的低频和高频(A1和D1)系数;

A1=upcoef('a',cA1,'db4',1,ls);

D1=upcoef('a',cD1,'db4',1,ls);

或用下面两个函数:

A1=idwt(cA1,[],'db4',ls);

D1=idwt(cD1,[],'db4',ls);

4显示高频和低频部分

为了显示第一层分解结果,输入

subplot(211); plot(A1); title('低频A1');

subplot(212); plot(D1); title('低频D1');

5由小波逆变换恢复信号

使用idwt函数很容易实现,在命令窗口输入

subplot(211); plot(s); title('原始信号');

subplot(212); plot(A0); title('重构信号');

6多层一维分解

为了完成一个5层的分解,输入:

[C,L]=wavedec(s,5,'db4');

7提取系数的低频和高频部分

为了从上面的C中提取第3层的低频系数,输入:

cA3=appcoef(C,L,'db4',3);

8重构第3层的低频系数

为了从上面的C中重构第3层的低频系数,输入:

A3=wrcoef('a',C,L,'db4',3);

9重构第1、2、3、4、5层的高频信号

其方法是:

cA5=appcoef(C,L,'db4',5);

A5=wrcoef('a',C,L,'db4',5);

D1=wrcoef('d',C,L,'db4',1);

D2=wrcoef('d',C,L,'db4',2);

D3=wrcoef('d',C,L,'db4',3);

D4=wrcoef('d',C,L,'db4',4);

D5=wrcoef('d',C,L,'db4',5);

下面显示多尺度一维分解的结果:

subplot(322); plot(D1); title('低频D1');

subplot(323); plot(D2); title('低频D2');

subplot(323); plot(D3); title('低频D3');

subplot(325); plot(A5); title('低频D4');

subplot(326); plot(A5); title('低频D5');

10重构原始信号并显示

A0=waverec(C,L,'db4');

subplot(311); plot(s); title('原始信号');

subplot(312); plot(A0); title('重构信号');

subplot(313); plot(s-A0); title('误差信号');

貌似对,其实实际应用中是有不少问题滴,如吉布斯效应,平移敏感性问题,频率混叠等,最终wprcoef对任一节点进行重构滴结果,有很大成分是原始信号中对应频段中根本没有或被歪曲,由小波变换造成滴假相。个人认为,一般是新手糊弄外行为发文章滴做法,不足为信,也不可取呦!

以上就是关于急求一段matlab程序全部的内容,包括:急求一段matlab程序、matlab小波包分析怎么做、关于MATLAB中复小波的分解与重构等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9365062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存