24小时热门版块排行榜    

查看: 855  |  回复: 1

nobodyxu

木虫 (正式写手)

[求助] 小波重构出现问题

各位大侠你们好,帮我看看下面小波去噪的程序,在matlab运行过程中出现
??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
same number of rows.

Error in ==> xiaoboquzhouqi at 12
cs=[cs,coef_soft{j}];
也就是说处理之后的小波分解系数在并入一个矩阵时,时列的个数不一样,就不能进行重构。帮我看看怎么处理,谢谢了!


局部放电试验所采集的信号中往往混有白噪声、周期干扰信号去除。此处采用常用db系列小波中的db6小波进行9尺度的多分辨分解后,根据白噪声能量特性,估算各尺度的阈值大小,采用硬值进行处理,后进行重构。Matlab程序如下:
function sd=liu_denoise(mix_signal)
%此函数用于去除白躁信号&周期性干扰信号
%输入参数mix_signal为采集到的信号波形
p=0.6745;
w_dept=9;
w_name='db6';
coef=cell(1,w_dept);
thr=zeros(1,w_dept+1);
[c,l]=wavedec(mix_signal,w_dept,w_name);  %对混合信号S进行db6的9尺度一维分解
coef(1)={appcoef(c,l,w_name,w_dept)};%计算尺度为9的一维分解低频系数 cs=[cs,coef_soft{j}];
thr(1)=median(abs(coef{1}))/p*sqrt(2*log(length(coef{1})));%计算1尺度上的阈值
coef_soft(1)={wthresh(coef{1},'h',thr(1))};%对小波系数进行阈值为thr(1)的硬阈值处理
cs=[coef_soft{1}];
for j=2:w_dept+1
   coef(j)={detcoef(c,l,w_dept-j+2)};%计算尺度为9到2的各尺度高频小波系数
                 coef1(j)={detcoef(c,l,w_dept-j+2)};
  thr(j)=median(abs(coef{j}))/p*sqrt(2*log(length(coef{j})));%计算9到2各尺度上的阈值
  coef_soft(j)={wthresh(coef{j},'h',thr(j))};%对小波系数进行阈值为thr(j)的硬阈值处理            
  cs=[cs,coef_soft{j}];
end
sd=waverec(cs,l,w_name); %根据小波系数[cs,l]对信号进行重构
回复此楼
我就是我
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

竹林里的星星

新虫 (小有名气)

这个程序有问题,反正我搞不懂
You know you love me!
2楼2014-05-05 10:04:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 nobodyxu 的主题更新
信息提示
请填处理意见