搜档网
当前位置:搜档网 › 小波信号分解与重构的Matlab程序

小波信号分解与重构的Matlab程序

小波信号分解与重构的Matlab程序
小波信号分解与重构的Matlab程序

Matlab小波分析工具箱丰富的函数和强大的仿真功能为我们学习小波、用好小波提供了方便、快捷的途径,但是,如果我们要深入掌握小波分析的原理,真正学好、用好小波,就应该尽量用自己编写的程序去实现小波变换和信号分析,尽量在自己的程序中少调用Matlab提供的函数,多用自己的理解去编写相关的小波函数,这样的过程是一个探索、求知的过程,更能让我们体会到小波的强大和学习的乐趣。下面,我把自己编写的小波一维、二维信号分解和重构Matlab 程序共享出来,也希望有朋友共享自编的程序,共同学习,提高程序的效率和简洁性。

首先要说明的一点是,虽然是自己编写Matlab程序,但并不是说一点也不用Matlab的自带函数。我们要编写的是实现小波变换的主要功能函数,而绘图等基本功能还是要用到Matlab函数的。而且,根据小波变换的滤波器组原理,原始信号要通过低通、高通滤波器处理,这里就涉及到卷积这一运算步骤。卷积——FFT算法的实现,相信很多朋友都能用Matlab、C语言等来实现,不过与Matlab自带的用机器语言编写的FFT程序相比,运算速度一般会慢几倍、几十倍。所以,我的程序里边涉及卷积的就直接调用Matlab的conv()函数了。

我们知道,小波变换的一级分解过程是,原始信号分别进行低通、高通滤波,再分别进行二元下抽样,就得到低频、高频(也称为平均、细节)两部分系数;而多级分解则是对上一级分解得到的低频系数再进行小波分解,是一个递归过程。以下是一维小波分解的程序:

function [cA,cD] = mydwt(x,lpd,hpd,dim);

% 函数[cA,cD]=MYDWT(X,LPD,HPD,DIM) 对输入序列x进行一维离散小波分解,输出分解序列[cA,cD]

% 输入参数:x——输入序列;

% lpd——低通滤波器;

% hpd——高通滤波器;

% dim——小波分解级数。

% 输出参数:cA——平均部分的小波分解系数;

% cD——细节部分的小波分解系数。

cA=x; % 初始化cA,cD

cD=[];

for i=1:dim

cvl=conv(cA,lpd); % 低通滤波,为了提高运行速度,调用MATLAB提供的卷积函数conv()

dnl=downspl(cvl); % 通过下抽样求出平均部分的分解系数

cvh=conv(cA,hpd); % 高通滤波

dnh=downspl(cvh); % 通过下抽样求出本层分解后的细节部分系数

cA=dnl; % 下抽样后的平均部分系数进入下一层分解

cD=[cD,dnh]; % 将本层分解所得的细节部分系数存入序列cD

end

function y=downspl(x);

% 函数Y=DOWMSPL(X) 对输入序列进行下抽样,输出序列Y。

% 下抽样是对输入序列取其偶数位,舍弃奇数位。例如x=[x1,x2,x3,x4,x5],则y=[x2,x4].

N=length(x); % 读取输入序列长度

M=floor(N/2); % 输出序列的长度是输入序列长度的一半(带小数时取整数

部分)

i=1:M;

y(i)=x(2*i);

而重构则是分解的逆过程,对低频系数、高频系数分别进行上抽样和低通、高通滤波处理。要注意重构时同一级的低频、高频系数的个数必须相等。function y = myidwt(cA,cD,lpr,hpr);

% 函数MYIDWT() 对输入的小波分解系数进行逆离散小波变换,重构出信号序列y

% 输入参数:cA ——平均部分的小波分解系数;

% cD ——细节部分的小波分解系数;

% lpr、hpr ——重构所用的低通、高通滤波器。

lca=length(cA); % 求出平均、细节部分分解系数的长度

lcd=length(cD);

while (lcd)>=(lca) % 每一层重构中,cA 和cD 的长度要相等,故每层重构后,

% 若lcd小于lca,则重构停止,这时的cA 即为重构信号序列y 。

upl=upspl(cA); % 对平均部分系数进行上抽样

cvl=conv(upl,lpr); % 低通卷积

cD_up=cD(lcd-lca+1:lcd); % 取出本层重构所需的细节部分系数,长度与本层平均部分系数的长度相等

uph=upspl(cD_up); % 对细节部分系数进行上抽样

cvh=conv(uph,hpr); % 高通卷积

cA=cvl+cvh; % 用本层重构的序列更新cA,以进行下一层重构

cD=cD(1:lcd-lca); % 舍弃本层重构用到的细节部分系数,更新cD

lca=length(cA); % 求出下一层重构所用的平均、细节部分系数的长度lcd=length(cD);

end % lcd < lca,重构完成,结束循环

y=cA; % 输出的重构序列y 等于重构完成后的平均部分系数序列cA

function y=upspl(x);

% 函数Y = UPSPL(X) 对输入的一维序列x进行上抽样,即对序列x每个元素之间

% 插零,例如x=[x1,x2,x3,x4],上抽样后为y=[x1,0,x2,0,x3,0,x4];

N=length(x); % 读取输入序列长度

M=2*N-1; % 输出序列的长度是输入序列长度的2倍再减一

for i=1:M % 输出序列的偶数位为0,奇数位按次序等于相应位置的输入序列元素

if mod(i,2)

y(i)=x((i+1)/2);

else

y(i)=0;

end

end

我们知道,二维小波分解重构可以用一系列的一维小波分解重构来实现。以下程序是基于Haar小波的二维小波分解和重构过程:

function [LL,HL,LH,HH]=mydwt2(x);

% 函数MYDWT2() 对输入的r*c维矩阵x 进行二维小波分解,输出四个分解系数子矩阵[LL,HL,LH,HH]

% 输入参数:x ——输入矩阵,为r*c维矩阵。

% 输出参数:LL,HL,LH,HH ——是分解系数矩阵的四个相等大小的子矩阵,大小均为r/2 * c/2 维

% LL:低频部分分解系数;HL:垂直方向分解系数;

% LH:水平方向分解系数;HH:对角线方向分解系数。

lpd=[1/2 1/2];hpd=[-1/2 1/2]; % 默认的低通、高通滤波器

[row,col]=size(x); % 读取输入矩阵的大小

for j=1:row % 首先对输入矩阵的每一行序列进行一维离散小波

分解

tmp1=x(j,:);

[ca1,cd1]=mydwt(tmp1,lpd,hpd,1);

x(j,:)=[ca1,cd1]; % 将分解系数序列再存入矩阵x中,得到[L|H] end

for k=1:col % 再对输入矩阵的每一列序列进行一维离散小波分解

tmp2=x(:,k);

[ca2,cd2]=mydwt(tmp2,lpd,hpd,1);

x(:,k)=[ca2,cd2]; % 将分解所得系数存入矩阵x中,得到

[LL,Hl;LH,HH]

end

LL=x(1:row/2,1:col/2); % LL是矩阵x的左上角部分

LH=x(row/2+1:row,1:col/2); % LH是矩阵x的左下角部分

HL=x(1:row/2,col/2+1:col); % HL是矩阵x的右上角部分

HH=x(row/2+1:row,col/2+1:col); % HH是矩阵x的右下角部分

function y=myidwt2(LL,HL,LH,HH);

% 函数MYIDWT2() 对输入的子矩阵序列进行逆小波变换,重构出矩阵y

% 输入参数:LL,HL,LH,HH ——是四个大小均为r*c 维的矩阵

% 输出参数:y ——是一个大小为2r*2c 维的矩阵

lpr=[1 1];hpr=[1 -1]; % 默认的低通、高通滤波器

tmp_mat=[LL,HL;LH,HH]; % 将输入的四个矩阵组合为一个矩阵[row,col]=size(tmp_mat); % 求出组合矩阵的行列数

for k=1:col % 首先对组合矩阵tmp_mat的每一列,分开成上下两半ca1=tmp_mat(1:row/2,k); % 分开的两部分分别作为平均系数序列ca1、细节系数序列cd1

cd1=tmp_mat(row/2+1:row,k);

tmp1=myidwt(ca1,cd1,lpr,hpr); % 重构序列

yt(:,k)=tmp1; % 将重构序列存入待输出矩阵yt 的相应列,此时

y=[L|H]

end

for j=1:row % 将输出矩阵y 的每一行,分开成左右两半ca2=yt(j,1:col/2); % 分开的两部分分别作为平均系数序列ca2、细节系数序列cd2

cd2=yt(j,col/2+1:col);

tmp2=myidwt(ca2,cd2,lpr,hpr); % 重构序列

yt(j,:)=tmp2; % 将重构序列存入待输出矩阵yt 的相应行,得到最终的输出矩阵y=yt

end

y=yt;

(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,

供参考,感谢您的配合和支持)

小波信号分解与重构的Matlab程序

首先要说明的一点是,虽然是自己编写Matlab程序,但并不是说一点也不用Matlab的自带函数。我们要编写的是实现小波变换的主要功能函数,而绘图等基本功能还是要用到Matlab函数的。而且,根据小波变换的滤波器组原理,原始信号要通过低通、高通滤波器处理,这里就涉及到卷积这一运算步骤。卷积——FFT算法的实现,相信很多朋友都能用 Matlab、C语言等来实现,不过与Matlab自带的用机器语言编写的FFT程序相比,运算速度一般会慢几倍、几十倍。所以,我的程序里边涉及卷积的就直接调用Matlab的conv()函数了。 我们知道,小波变换的一级分解过程是,原始信号分别进行低通、高通滤波,再分别进行二元下抽样,就得到低频、高频(也称为平均、细节)两部分系数;而多级分解则是对上一级分解得到的低频系数再进行小波分解,是一个递归过程。以下是一维小波分解的程序: function [cA,cD] = mydwt(x,lpd,hpd,dim); % 函数 [cA,cD]=MYDWT(X,LPD,HPD,DIM) 对输入序列x进行一维离散小波分解,输出分解序列[cA,cD] % 输入参数:x——输入序列; % lpd——低通滤波器; % hpd——高通滤波器; % dim——小波分解级数。 % 输出参数:cA——平均部分的小波分解系数; % cD——细节部分的小波分解系数。 cA=x; % 初始化cA,cD cD=[]; for i=1:dim cvl=conv(cA,lpd); % 低通滤波,为了提高运行速度,调用MATLAB 提供的卷积函数conv() dnl=downspl(cvl); % 通过下抽样求出平均部分的分解系数

最新小波去噪matlab程序.优选

[转帖]小波去噪matlab程序 ****************************************** clear clc %在噪声环境下语音信号的增强 %语音信号为读入的声音文件 %噪声为正态随机噪声 sound=wavread('c12345.wav'); count1=length(sound); noise=0.05*randn(1,count1); for i=1:count1 signal(i)=sound(i); end for i=1:count1 y(i)=signal(i)+noise(i); end %在小波基'db3'下进行一维离散小波变换[coefs1,coefs2]=dwt(y,'db3'); %[低频高频] count2=length(coefs1); count3=length(coefs2); energy1=sum((abs(coefs1)).^2); energy2=sum((abs(coefs2)).^2);

energy3=energy1+energy2; for i=1:count2 recoefs1(i)=coefs1(i)/energy3; end for i=1:count3 recoefs2(i)=coefs2(i)/energy3; end %低频系数进行语音信号清浊音的判别 zhen=160; count4=fix(count2/zhen); for i=1:count4 n=160*(i-1)+1:160+160*(i-1); s=sound(n); w=hamming(160); sw=s.*w; a=aryule(sw,10); sw=filter(a,1,sw); sw=sw/sum(sw); r=xcorr(sw,'biased'); corr=max(r); %为清音(unvoice)时,输出为1;为浊音(voice)时,输出为0 if corr>=0.8

小波变换的基本原理

10.2小波变换的基本原理 地质雷达的电磁波信号和地震波信号都是非平稳随机时变信号,长期以来,因非平稳信号处理的理论不健全,只好将其作为平稳信号来处理,其处理结果当然不满意。近年来,随着科学技术的发展和进步,国内外学术界已将注意力转向非平稳随机信号分析与处理的研究上,其中非平稳随机信号的时频表示法是研究热点之一。在这一研究中,戈勃展开、小波变换、维格纳分布与广义双线性时频分布等理论发展起来,这些方法既可以处理平稳信号过程,也可以处理非平稳随机时变信号。 小波变换是上世纪80年代中后期逐渐发展起来的一种数学分析方法。1984年法国科学家J.M OLET在分析地震波的局部特性时首先使用了小波这一术语,并用小波变换对地震信号进行处理。小波术语的含义是指一组衰减震动的波形,其振幅正负相间变化,平均值为零,是具有一定的带宽和中心频率波组。小波变换是用伸缩和平移小波形成的小波基来分解(变换)或重构(反变换)时变信号的过程。不同的小波具有不同带宽和中心频率,同一小波集中的带宽与中心频率的比是不变的,小波变换是一系列的带通滤波响应。它的数学过程与傅立叶分析是相似的,只是在傅立叶分析中的基函数是单频的调和函数,而小波分析中的基函数是小波,是一可变带宽内调和函数的组合。 小波变换在时域和频域都具有很好的局部化性质,较好地解决了时域和频域分辨率的矛盾,对于信号的低频成分采用宽时窗,对高频成分采用窄时窗。因而,小波分析特别适合处理非平稳时变信号,在语音分析和图象处理中有广泛的应用,在地震、雷达资料处理中将有良好的应用前景。 下边就小波分析的基本原理、主要作用及在雷达资料处理中的应用三方面作以介绍。 10.2.1小波分析的基本原理 小波函数的数学表达

小波分解与重构代码

load leleccum; s = leleccum(1:3920); % 用db1小波函数对信号进行三尺度小波分解 [C,L]=wavedec(s,2,'db1'); figure(1); plot(s); title('leleccum原始信号'); % 提取尺度1的低频系数 cA1 = appcoef(C,L,'db1',1); %用小波分解框架[C.L]计算1层低频系数的近似值,小波基为db1 % 提取尺度2的低频系数 cA2 = appcoef(C,L,'db1',2); figure(2); subplot(2,1,1); plot(cA1); title('尺度1的低频系数'); subplot(2,1,2); plot(cA2); title('尺度2的低频系数'); % 提取尺度1的高频系数 cD1 = detcoef(C,L,1); %用小波分解框架[C.L]计算1层高频系数的近似值,小波基为db1 % 提取尺度2的高频系数 cD2 = detcoef(C,L,2); figure(3); subplot(2,1,1); plot(cD1); title('尺度1的高频系数'); subplot(2,1,2); plot(cD2); title('尺度2的高频系数');

我给你大概标注了一下,但是你的程序有问题, % 小波图像压缩 - RGB 图像 clear all; close all; % 读取图像 im = input('输入图像');%输入图像名称,要加分号 X=imread(im); % 输入要分解的小波层数和小波 n=input('输入要分解的小波层数');%输入所要分解的层数 wname = input('输入小波名称');%输入小波名称,也要加分号 x = double(X); NbColors = 255; map = gray(NbColors); x = uint8(x); %把RGB图像转换成灰度图 % x = double(X); % xrgb = 0.2990*x(:,:,1) + 0.5870*x(:,:,2) + 0.1140*x(:,:,3); % colors = 255; % x = wcodemat(xrgb,colors); % map = pink(colors); % x = uint8(x); % 对图像x进行n维小波分解 x=imread(’ D:\a.jpg’); map=x; n=3 wname='sym5'; [c,s] = wavedec2(x,n,wname); % 使用默认参数选择各层不同的阈值 alpha = 1.5; m = 2.7*prod(s(1,:)); [thr,nkeep] = wdcbm2(c,s,alpha,m) % 使用上面的阈值和硬阈值处理进行图像压缩 [xd,cxd,sxd,perf0,perfl2] = wdencmp('lvd',c,s,wname,n,thr,'h'); disp('压缩效率'); disp(perf0); % 重构(下面这个地方有问题,你这里是原始图像小波变换后进行重构,xd才是小波阀值压缩后重构的图像,cxd,sxd,是c,s经过阀值处理后得到的小波分解结构,也就是说xd=waverec2(cxd,sxd,wname);这个wdencmp函数不需要另外进行重构,你下面那些关于重构的都没用,而下面压缩后的图像才是重构后的图像,) R = waverec2(c,s,wname); rc = uint8(R); % 显示原始图像和压缩图像 subplot(221), image(x); colormap(map); title('原始图像') subplot(222), image(xd); colormap(map); title('压缩后的图像') % 显示结果 xlab1 = ['图像压缩后保留能量百分比',num2str(perfl2)];

matlab图像分解与重构

%程序段: clear all A=imread('鬼兰.jpg') %读入原图 B=rgb2gray(A) %转灰度图像newmap=rgb2gray(A) C=double(B); %转浮点型 nbcol=size(B,1); [cA1,cH1,cV1,cD1]=dwt2(C,'db1'); %第一次分解dec1d=[cA1,cH1;cV1,cD1]; [cA2,cH2,cV2,cD2]=dwt2(cA1,'db1'); %第二次分解 dec2d=[cA2,cH2;cV2,cD2] [cA3,cH3,cV3,cD3]=dwt2(cA2,'db1'); %第三次分解 dec3d=[cA3,cH3;cV3,cD3] %由二维小波分解重构原始图像 t1=size(dec3d) %第一次重构 X1=idwt2 (cA3,cH3,cV3,cD3,'db1',t1) t2=size(dec2d) %第二次重构 X2=idwt2 (X1,cH2,cV2,cD2,'db1',t2) t3=size(dec1d) %第三次重构 X3=idwt2 (X2,cH1,cV1,cD1,'db1',t3) %在同一窗口中显示以上各图像subplot(2,4,1),imshow(A),title('原图') subplot(2,4,2),imshow(B),title('灰度图像') subplot(2,4,3),imshow(dec1d,[ ]),title ('第一次分解后图像') subplot(2,4,4),imshow(dec2d,[ ]) ,title('第二次分解后图像') subplot(2,4,5),imshow(dec3d,[ ]),title('第三次分解后图像') subplot(2,4,6),imshow(X1,[ ]),title ('第一次重构') subplot(2,4,7),imshow(X2,[ ]),title ('第二次重构') subplot(2,4,8),imshow(X3,[ ]),title ('第三次重构') %db1分解及重构图像:

matlab小波去噪详解

小波去噪 [xd,cxd,lxd]=wden(x,tptr,sorh,scal,n,'wname') 式中: 输入参数x 为需要去噪的信号; 1.tptr :阈值选择标准. 1)无偏似然估计(rigrsure)原则。它是一种基于史坦无偏似然估计(二次方程)原理的自适应阈值选择。对于一个给定的阈值t,得到它的似然估计,再将似然t 最小化,就得到了所选的阈值,它是一种软件阈值估计器。 2)固定阈值(sqtwolog)原则。固定阈值thr2 的计算公式为:thr 2log(n) 2 = (6)式中,n 为信号x(k)的长度。 3)启发式阈值(heursure)原则。它是rigrsure原则和sqtwolog 原则的折中。如果信噪比很小,按rigrsure 原则处理的信号噪声较大,这时采用sqtwolog原则。 4)极值阈值(minimaxi)原则。它采用极大极小原理选择阈值,产生一个最小均方误差的极值,而不是没有误差。 2.sorh :阈值函数选择方式,即软阈值(s) 或硬阈值(h). 3.scal :阈值处理随噪声水平的变化,scal=one 表示不随噪声水平变化,scal=sln 表示根据第一层小波分解的噪声水平估计进行调整,scal=mln 表示根据每一层小波分解的噪声水平估计进行调整. 4.n 和wname 表示利用名为wname 的小波对信号进行n 层分解。输出去噪后的数据xd 及xd 的附加小波分解结构[cxd,lxd]. 常见的几种小波:haar,db,sym,coif,bior haar db db1 db2 db3 db4 db5 db6 db7 db8 db9 db10 sym sym2 sym3 sym4 sym5 sym6 sym7 sym8 coif coif1 coif2 coif3 coif4 coif5 coif6 coif7 coif8 coif9 coif10 bior bior1.1 bior1.3 bior1.5 bior2.2 bior2.4 bior2.6 bior2.8 bior3.5 bior3.7 bior3.9 bior4.4

小波实验报告一维Haar小波2次分解

一、题目:一维Haar 小波2次分解 二、目的:编程实现信号的分解与重构 三、算法及其实现:离散小波变换 离散小波变换是对信号的时-频局部化分析,其定义为:/2200()(,)()(),()()j j Wf j k a f t a t k dt f t L R φ+∞---∞=-∈? 本实验实现对信号的分解与重构: (1)信号分解:用小波工具箱中的dwt 函数来实现离散小波变换,函数dwt 将信号分解为两部分,分别称为逼近系数和细节系数(也称为低频系数和高频系数),实验中分别记为cA1,cD1,它们的长度均为原始信号的一半,但dwt 只能实现原始信号的单级分解。在本实验中使用小波函数db1来实现单尺度小波分解,即: [cA1,cD1]=dwt(s,’db1’),其中s 是原信号;再通过[cA2,cD2]=dwt(cA1,’db1’)进行第二次分解,长度又为cA2的一半。 (2)信号重构:用小波工具箱中的upcoef 来实现,upcoef 是进行一维小波分解系数的直接重构,即: A1 = upcoef('a',cA1,'db1'); D1 = upcoef('a',cD1,'db1')。 四、实现工具:Matlab 五、程序代码: %装载leleccum 信号 load leleccum; s = leleccum(1:3920); %用小波函数db1对信号进行单尺度小波分解 [cA1,cD1]=dwt(s,'db1'); subplot(3,2,1); plot(s); title('leleccum 原始信号'); %单尺度低频系数cA1向上一步的重构信号 A1 = upcoef('a',cA1,'db1'); %单尺度高频系数cD1向上一步的重构信号 D1 = upcoef('a',cD1,'db1'); subplot(3,2,3); plot(A1); title('单尺度低频系数cA1向上一步的重构信号'); subplot(3,2,5); plot(D1); title('单尺度高频系数cD1向上一步的重构信号'); [cA1,cD1]=dwt(cA1,’db1'); subplot(3,2,2); plot(s); title('leleccum 第一次分解后的cA1信号'); %第二次分解单尺度低频系数cA2向上一步的重构信号 A2= upcoef('a',cA2,'db1',2); %第二次分解单尺度高频系数cD2向上一步的重构信号 D2 = upcoef('a',cD2,'db1',2); subplot(3,2,4); plot(A2);

小波分解与重构原理

“小波工程应用”实验报告 一维信号离散小波分解与重构(去噪)的VC实现 一、目的 在理解了离散小波变换的基本原理和算法的基础上,通过设计VC程序对简单的一维信号在加上了高斯白噪声之后进行Daubechies小波、Morlet小波和Haar小波变换,从而得到小波分解系数;再通过改变分解得到的各层高频系数进行信号的小波重构达到消噪的目的。在这一程序实现的过程中能直观地理解信号小波分解重构的过程和在信号消噪中的重要作用,以及在对各层高频系数进行权重处理时系数的选取对信号消噪效果的影响。 二、基本原理 1、信号的小波分解与重构原理 在离散小波变换(DWT)中,我们在空间上表示信号,也就是说对于每一个在上表示的信号能用在上面提到的两个空间中的基函数来表示。 Where and are the coefficients of the scale metric space (j-1) which are obtained after the Decomposing the coefficient of the scale metric space j . Analogously we could reconstruct the by and . 我们在尺度度量空间对系数进行分解得到在尺度度量空间的两个系数 和。同样的,我们也能从两个系数和通过重构得到系数。

如上图中的分解与重构我们可以通过一定的滤波器组来实现(也就是小波变换算法)。当小波和尺度在空间内是正交的,我们就可以用内积公式计算得到系数和: 下面是内积计算方法的具体公式: 具体的系数计算过程如下: 对于上面的小波分解过程,通过分别设计高通滤波器和低通滤波器两组滤波器的系数(数组g[]和h[])即可实现,特别是对于离散小波变换,程序算法相对简单。而重构也只是分解的逆过程,重构算法和分解的算法是相对应而互逆的。 2、小波去噪原理

Matlab中图像函数大全

图像增强 1. 直方图均衡化的Matlab 实现 1.1 imhist 函数 功能:计算和显示图像的色彩直方图 格式:imhist(I,n) imhist(X,map) 说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X, map) 就算和显示索引色图像X 的直方图,map 为调色板。用stem(x,coun ts) 同样可以显示直方图。 1.2 imcontour 函数 功能:显示图像的等灰度值图 格式:imcontour(I,n),imcontour(I,v) 说明:n 为灰度级的个数,v 是有用户指定所选的等灰度级向量。 1.3 imadjust 函数 功能:通过直方图变换调整对比度 格式:J=imadjust(I,[low high],[bottom top],gamma) newmap=imadjust(map,[low high],[bottom top],gamma) 说明:J=imadjust(I,[low high],[bottom top],gamma) 其中,gamma 为校正量r,[low high] 为原图像中要变换的灰度范围,[bottom top] 指定了变换后的灰度范围;newmap=imadjust(map,[low high],[bottom top],gamm a) 调整索引色图像的调色板map 。此时若[low high] 和[bottom top] 都为2×3的矩阵,则分别调整R、G、B 3个分量。

1.4 histeq 函数 功能:直方图均衡化 格式:J=histeq(I,hgram) J=histeq(I,n) [J,T]=histeq(I,...) newmap=histeq(X,map,hgram) newmap=histeq(X,map) [new,T]=histeq(X,...) 说明:J=histeq(I,hgram) 实现了所谓“直方图规定化”,即将原是图象I 的直方图变换成用户指定的向量hgram 。hgram 中的每一个元素都在[0,1] 中;J=histeq(I,n) 指定均衡化后的灰度级数n ,缺省值为64;[J,T]=histeq(I,...)返回从能将图像I 的灰度直方图变换成图像J 的直方图的变换T ;newma p=histeq(X,map) 和[new,T]=histeq(X,...) 是针对索引色图像调色板的直方图均衡。 2. 噪声及其噪声的Matlab 实现 imnoise 函数 格式:J=imnoise(I,type) J=imnoise(I,type,parameter) 说明:J=imnoise(I,type) 返回对图像I 添加典型噪声后的有噪图像J ,参数type 和parameter 用于确定噪声的类型和相应的参数。 3. 图像滤波的Matlab 实现 3.1 conv2 函数 功能:计算二维卷积

小波去噪matlab程序

小波去噪matlab程序 ****************************************** clear clc %在噪声环境下语音信号的增强 %语音信号为读入的声音文件 %噪声为正态随机噪声 sound=wavread('c12345.wav'); count1=length(sound); noise=0.05*randn(1,count1); for i=1:count1 signal(i)=sound(i); end for i=1:count1 y(i)=signal(i)+noise(i); end %在小波基'db3'下进行一维离散小波变换 [coefs1,coefs2]=dwt(y,'db3');%[低频高频] count2=length(coefs1); count3=length(coefs2); energy1=sum((abs(coefs1)).^2); energy2=sum((abs(coefs2)).^2); energy3=energy1+energy2; for i=1:count2 recoefs1(i)=coefs1(i)/energy3; end for i=1:count3 recoefs2(i)=coefs2(i)/energy3; end %低频系数进行语音信号清浊音的判别 zhen=160; count4=fix(count2/zhen); for i=1:count4 n=160*(i-1)+1:160+160*(i-1); s=sound(n); w=hamming(160); sw=s.*w; a=aryule(sw,10); sw=filter(a,1,sw);

matlab图像去噪算法设计(精)

数字图像去噪典型算法及matlab实现 希望得到大家的指点和帮助 图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等; 目前比较经典的图像去噪算法主要有以下三种: 均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。 中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。 Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。实验一:均值滤波对高斯噪声的效果 I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');%读取图像 J=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声 subplot(2,3,1);imshow(I); title('原始图像'); subplot(2,3,2); imshow(J); title('加入高斯噪声之后的图像'); %采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波 K1=filter2(fspecial('average',3),J)/255; %模板尺寸为3 K2=filter2(fspecial('average',5),J)/255;% 模板尺寸为5 K3=filter2(fspecial('average',7),J)/255; %模板尺寸为7 K4= filter2(fspecial('average',9),J)/255; %模板尺寸为9 subplot(2,3,3);imshow(K1); title('改进后的图像1'); subplot(2,3,4); imshow(K2); title('改进后的图像2');

小波图像去噪及matlab分析

小波图像去噪及matlab实例 图像去噪 图像去噪是信号处理的一个经典问题,传统的去噪方法多采用平均或线性方法进行,常用的是维纳滤波,但是去噪效果不太好(维纳滤波在图像复原中的作用)。 小波去噪 随着小波理论的日益完善,其以自身良好的时频特性在图像去噪领域受到越来越多的关注,开辟了用非线性方法去噪的先河。具体来说,小波能够去噪主要得益于小波变换有如下特点: (1)低熵性。小波系数的稀疏分布,使图像变换后的熵降低。意思是对信号(即图像)进行分解后,有 更多小波基系数趋于0(噪声),而信号主要部分多集中于某些小波基,采用阈值去噪可以更好的保留原 始信号。 (2)多分辨率特性。由于采用了多分辨方法,所以可以非常好地刻画信号的非平稳性,如突变和断点等(例如0-1突变是傅里叶变化无法合理表示的),可以在不同分辨率下根据信号和噪声的分布来消除噪声。(3)去相关性。小波变换可对信号去相关,且噪声在变换后有白化趋势,所以小波域比时域更利于去噪。(4)基函数选择灵活。小波变换可灵活选择基函数,也可根据信号特点和去噪要求选择多带小波和小波 包等(小波包对高频信号再次分解,可提高时频分辨率),对不同场合,选择不同小波基函数。 根据基于小波系数处理方式的不同,常见去噪方法可分为三类: (1)基于小波变换模极大值去噪(信号与噪声模极大值在小波变换下会呈现不同变化趋势)

(2)基于相邻尺度小波系数相关性去噪(噪声在小波变换的各尺度间无明显相关性,信号则相反)(3)基于小波变换阈值去噪 小波阈值去噪是一种简单而实用的方法,应用广泛,因此重点介绍。 阈值函数选择 阈值处理函数分为软阈值和硬阈值,设w是小波系数的大小,wλ是施加阈值后小波系数大小,λ为阈值。(1)硬阈值 当小波系数的绝对值小于给定阈值时,令其为0,而大于阈值时,保持其不变,即: (2)软阈值 当小波系数的绝对值小于给定阈值时,令其为0,大于阈值时,令其都减去阈值,即: 如下图,分别是原始信号,硬阈值处理结果,软阈值处理结果。硬阈值函数在|w| = λ处是不连续的,容易造成去噪后图像在奇异点附近出现明显的伪吉布斯现象。 阈值大小的选取 阈值的选择是离散小波去噪中最关键的一部。在去噪过程中,小波阈值λ起到了决定性作用:如果阈值太小,则施加阈值后的小波系数将包含过多的噪声分量,达不到去噪的效果;反之,阈值太大,则去除了有用的成分,造成失真。小波阈值估计方法很多,这里暂不介绍。 小波去噪实现步骤 (1)二维信号的小波分解。选择一个小波和小波分解的层次N,然后计算信号s到第N层的分解。

小波变换的原理及matlab仿真程序讲解学习

小波变换的原理及m a t l a b仿真程序

基于小波变换的信号降噪研究 2 小波分析基本理论 设Ψ(t)∈L 2( R) ( L 2( R) 表示平方可积的实数空间,即能量有限的信号空间) , 其傅立叶变换为Ψ(t)。当Ψ(t)满足条件[4,7]: 2 () R t dw w C ψψ =<∞? (1) 时,我们称Ψ(t)为一个基本小波或母小波,将母小波函数Ψ(t)经伸缩和平移后,就可以得到一个小波序列: ,()( )a b t b t a ψ -= ,,0a b R a ∈≠ (2) 其中a 为伸缩因子,b 为平移因子。 对于任意的函数f(t)∈L 2( R)的连续小波变换为: ,(,),()( )f a b R t b W a b f f t dt a ψψ-=<>= ? (3) 其逆变换为: 211()(,)()f R R t b f t W a b dadb C a a ψ ψ+-= ?? (4) 小波变换的时频窗是可以由伸缩因子a 和平移因子b 来调节的,平移因子b,可以改变窗口在相平面时间轴上的位置,而伸缩因子b 的大小不仅能影响窗口在频率轴上的位置,还能改变窗口的形状。小波变换对不同的频率在时域上的取样步长是可调节的,在低频时,小波变换的时间分辨率较低,频率分辨率较高:在高频时,小波变换的时间分辨率较高,而频率分辨率较低。使用小波变换处理信号时,首先选取适当的小波函数对信号进行分解,其次对分解出的参

数进行阈值处理,选取合适的阈值进行分析,最后利用处理后的参数进行逆小波变换,对信号进行重构。 3 小波降噪的原理和方法 3.1 小波降噪原理 从信号学的角度看 ,小波去噪是一个信号滤波的问题。尽管在很大程度上小波去噪可以看成是低通滤波 ,但由于在去噪后 ,还能成功地保留信号特征 ,所以在这一点上又优于传统的低通滤波器。由此可见 ,小波去噪实际上是特征提取和低通滤波的综合 ,其流程框图如图所示[6]: 小波分析的重要应用之一就是用于信号消噪 ,一个含噪的一维信号模型可表示为如下形式: (k)()()S f k e k ε=+* k=0.1…….n-1 其中 ,f( k)为有用信号,s(k)为含噪声信号,e(k)为噪声,ε为噪声系数的标准偏差。 假设e(k)为高斯白噪声,通常情况下有用信号表现为低频部分或是一些比较平稳的信号,而噪声信号则表现为高频的信号,下面对 s(k)信号进行如图结构的小波分解,则噪声部分通常包含在Cd1、Cd2、Cd3中,只要对 Cd1,Cd2,Cd3作相应的小波系数处理,然后对信号进行重构即可以达到消噪的目的。

数字图像处理(matlab版)第八章 图像融合算法

第八章图像融合算法 8.1 图像融合技术的发展过程 随着科学的发展和技术的进步,采集图像数据的手段不断完善,出现了各种新的图像获取技术。如今,图像融合方法已经运用于社会的很多领域,像遥感卫星图像,光图像,红外图像,医学图像,尤其是多传感器图像融合应用以来,它已成为计算机视觉,目标识别,机器人以及军事等方面研究的重要方面。

8.2基于小波变换图像融合的基本原理 如果一个图像进行L 层小波分解,我们将得到(3L +1)层子带,其中包括低频的基带和层的高频子带。用代表源图像,记为,设尺度系数和小波函数对应的滤波器系数矩阵分别为,则二维小波分解算法可描述为: j C 3L ,h v d D D D 和(,)f x y 0C ()x Φ()x ΨH G 与11 1 j h j j v j j d j j C HC H D GC H D HC G D GC G +++′ =??′=??′=??′=?j+1(0,1, (1) j J =?(8-1)

小波重构算法为: 基于二维DWT 的融合过程如图1.1所示,ImageA 和 ImageB 代表两幅源图像A 和B ,ImageF 代表融合后的图像,具体步骤如下:(1)图像的预处理: 1h v d j j j j j C H C H G D H H D G G D G ?′′′′=+++(,1, (1) j J J =?(8-2) 图8.1 基于DWT 图像融合过程

①图像滤波 ②图像配准 (2)对ImageA和ImageB进行二维DWT分解,得到图像的低频和高频分量。 (3)根据低频和高频分量的特点,按照各自的融合算法进行融合。 (4)对以上得到的高低频分量,经过小波逆变换重构得到融合图像ImageF。 8.3 融合效果性能评价指标 8.3.1均值和标准差

matlab小波函数

Matlab小波函数 一、Matlab小波去噪基本原理 1、带噪声的信号一般是由含有噪声的高频信号和原始信号所在的低频 信号。利用多层小波,将高频噪声信号从混合信号中分解出来。 2、选择合适的阈值对图像的高频信号进行量化处理 3、重构小波图像:依据图像小波分解的低频信号与处理之后的高频信 号来重构图像的信息。 二、第二代小波变换 1、构造方法特点: (1)继承了第一代小波的多分辨率的特性。 (2)不依赖fourior变换,直接在时域完成小波变换。 (3)变换之后的系数可以是整数。 (4)图像恢复质量与变换是边界采用何种延拓方式无关。 2、优点:算法简单,速度快,适合并行处理。对内存需求量小,便于DSP 芯片实现、可用于本位操作运算。 3、提升原理:构造紧支集双正交小波 (1)步骤:分裂—预测—更新 (2)分解与重构 三、matlab小波函数库 1、matlab小波通用函数: (1)wavemngr函数【小波管理器(用于小波管理,添加、删除、储存、读取小波)】 wavemngr(‘add’,FN,FSN,WT,NUMS,FILE) wavemngr(‘add’,FN,FSN,WT,NUMS,FILE,B) % 添加小波函数,FN为family name,FSN为family short name WT为小波类型:WT=1表示正交小波,=2表示非正交小波,=3表示带尺度函数的小波,=4表示无尺度函数的小波,=5表示 无尺度函数的复小波。 小波族只有一个小波,则NUMS=“,否则NUMS表示小波参数的字符串 FILE表示文件名 B=[lb ub]指定小波有效支撑的上下界 wavemngr(‘del’,N) %删除小波 wavemngr(‘restore’)/ wavemngr(‘restore’,IN2) %保存原始小波 OUT1= wavemngr(‘read’) %返回小波族的名称 OUT1= wavemngr(‘read’,IN2) %返回所有小波的名称 OUT1= wavemngr(‘read_asc’) %读取wavelets.asc文件并返回小波信息 (2)scal2frq函数【尺度转换频率】 F=scal2frq(A,’wname’,DELTA) %返回由尺度A,小波函数“wname”和采样周期DELTA决定的准 频率。 (3)orthfilt函数【正交小波滤波器组】

小波信号分解与重构的Matlab程序

Matlab小波分析工具箱丰富的函数和强大的仿真功能为我们学习小波、用好小波提供了方便、快捷的途径,但是,如果我们要深入掌握小波分析的原理,真正学好、用好小波,就应该尽量用自己编写的程序去实现小波变换和信号分析,尽量在自己的程序中少调用Matlab提供的函数,多用自己的理解去编写相关的小波函数,这样的过程是一个探索、求知的过程,更能让我们体会到小波的强大和学习的乐趣。下面,我把自己编写的小波一维、二维信号分解和重构Matlab 程序共享出来,也希望有朋友共享自编的程序,共同学习,提高程序的效率和简洁性。 首先要说明的一点是,虽然是自己编写Matlab程序,但并不是说一点也不用Matlab的自带函数。我们要编写的是实现小波变换的主要功能函数,而绘图等基本功能还是要用到Matlab函数的。而且,根据小波变换的滤波器组原理,原始信号要通过低通、高通滤波器处理,这里就涉及到卷积这一运算步骤。卷积——FFT算法的实现,相信很多朋友都能用Matlab、C语言等来实现,不过与Matlab自带的用机器语言编写的FFT程序相比,运算速度一般会慢几倍、几十倍。所以,我的程序里边涉及卷积的就直接调用Matlab的conv()函数了。 我们知道,小波变换的一级分解过程是,原始信号分别进行低通、高通滤波,再分别进行二元下抽样,就得到低频、高频(也称为平均、细节)两部分系数;而多级分解则是对上一级分解得到的低频系数再进行小波分解,是一个递归过程。以下是一维小波分解的程序: function [cA,cD] = mydwt(x,lpd,hpd,dim); % 函数[cA,cD]=MYDWT(X,LPD,HPD,DIM) 对输入序列x进行一维离散小波分解,输出分解序列[cA,cD] % 输入参数:x——输入序列; % lpd——低通滤波器; % hpd——高通滤波器; % dim——小波分解级数。 % 输出参数:cA——平均部分的小波分解系数; % cD——细节部分的小波分解系数。 cA=x; % 初始化cA,cD cD=[]; for i=1:dim cvl=conv(cA,lpd); % 低通滤波,为了提高运行速度,调用MATLAB提供的卷积函数conv() dnl=downspl(cvl); % 通过下抽样求出平均部分的分解系数 cvh=conv(cA,hpd); % 高通滤波 dnh=downspl(cvh); % 通过下抽样求出本层分解后的细节部分系数 cA=dnl; % 下抽样后的平均部分系数进入下一层分解 cD=[cD,dnh]; % 将本层分解所得的细节部分系数存入序列cD end function y=downspl(x); % 函数Y=DOWMSPL(X) 对输入序列进行下抽样,输出序列Y。 % 下抽样是对输入序列取其偶数位,舍弃奇数位。例如x=[x1,x2,x3,x4,x5],则

图像放大算法总结及MATLAB源程序

1,插值算法(3种): (1)最邻近插值(近邻取样法): 最邻近插值的的思想很简单,就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色。可见,最邻近插值简单且直观,速度也最快,但得到的图像质量不高。 最邻近插值法的MATLAB源代码为: A=imread('F:\lena.jpg');%读取图像信息 imshow(A);%显示原图 title('原图128*128'); Row=size(A,1);Col=size(A,2);%图像行数和列数 nn=8;%放大倍数 m=round(nn*Row);%求出变换后的坐标的最大值 n=round(nn*Col); B=zeros(m,n,3);%定义变换后的图像 for i=1:m for j=1:n x=round(i/nn);y=round(j/nn);%最小临近法对图像进行插值 if x==0x=1;end if y==0y=1;end if x>Row x=Row;end if y>Col y=Col;end B(i,j,:)=A(x,y,:); end end B=uint8(B);%将矩阵转换成8位无符号整数 figure; imshow(B); title('最邻近插值法放大8倍1024*1024'); 运行程序后,原图如图1所示:

图1 用最邻近插值法放大4倍后的图如图2所示: 图2 (2)双线性内插值法: 在双线性内插值法中,对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为[0,1)区间的浮点数,则这个像素得值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1) 其中f(i,j)表示源图像(i,j)处的的像素值,以此类推。 这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。 在MATLAB中,可用其自带的函数imresize()来实现双线性内插值算法。

五种常用小波基含MATLAB实现

1.给出五种常用小波基的时域和频域波形图。 与标准的傅里叶变换相比,小波分析中使用到的小波函数具有不唯一性,即小波函数(t)ψ 具有多样性。小波分析在工程应用中,一个十分重要的问题就是最优小波基的选择问题,因为用不同的小波基分析同一个问题会产生不同的结果。目前我们主要是通过用小波分析方法处理信号的结果与理论结果的误差来判定小波基的好坏,由此决定小波基。常用小波基有Haar 小波、Daubechies(dbN)小波、Mexican Hat(mexh)小波、Morlet 小波、Meyer 小波等5种。 (1)Haar 小波 Haar 函数是小波分析中最早用到的一个具有紧支撑的正交小波函数,也是最简答的一个小波函数,它是支撑域在[0,1]∈t 围的单个矩形波。 Haar 函数的 定义如下:其他 1212 1 001-1(t)≤≤≤≤?????=ψt t Haar 小波在时域上是不连续的,所以作为基本小波性能不是特别好。但它也有自己的优点,如: 计算简单; (t)ψ不但与t)2(j ψz][j ∈正交,而且与自己的整数位移正交。 因此,在2j a =的多分辨率系统中Haar 小波构成一组最简单的正交归一的小波 族。 ()t ψ的傅里叶变换是: 2/24=sin ()j e a ψ-ΩΩ ΩΩ()j

Haar 小波的时域和频域波形图 -1.5 -1 -0.5 0.5 1 1.5 t haar 时域 x 10 5 1 2 3 4 5 6 75 f haar 频域 i=20; wav = 'haar'; [phi,g1,xval] = wavefun(wav,i); subplot(1,2,1); plot(xval,g1,'-r','LineWidth',1.5); xlabel('t') title('haar 时域'); g2=fft(g1); g3=abs(g2); subplot(1,2,2);plot(g3); xlabel('f') title('haar 频域')

小波变换 mallat

实验目的:通过编程实现离散快速小波变换Mallat 算法,从而加深理解二维 小波变换的分解与合成,同时,提高编程能力和matlab 的应用,为以后的学习打下基础。 实验原理: 1、Mallat 快速算法 本实验使用离散快速小波变换快速算法Mallat 算法,算法原理如下 (1)1(2)j j k n n c h n k c -=-∑ (2) 1(2)j j k n n d g n k c -=-∑重构算法: (3) 1(2)(2)j j j n k k n n c h n k c g n k d -=-+-∑∑对于(1)、(2)等效于经过冲击响应为和的数字滤波器,然后再分别进 1 j n c -[]h n -[]g n -行“二抽取”,Mallat 分解算法的滤波器表示形式如下图 C j-1 d j (k) C j (k) 用滤波器表示如下图 d j C j C j-1(k) 2、 255*255 10lg PSNR MSE ='2 11 ()*M N ij ij i j f f MSE M N ==-= ∑∑ 分别表示原始图像和重建后的图像,。 {}ij f '{}ij f 1,1i M j N ≤≤≤≤3、边界延拓方法有零延拓、周期延拓、对称周期延拓、常数连续延拓等,本实验采用以上四种方法进行原图像的1/8延拓,并进行重构,各种延拓方法所对应的函数为yan0(x)、yancir (x )、yan(x)、yanc(x),在主程序中,需要某种延拓,便调用某种函数。

实验编程思路: 为使程序易于理解,在不考虑算法复杂度的情况下,分解程序采用简洁的循环计算出下一级的分解系数,程序采用的编程思想如下 [][][]11100[0][1][2][3][4][5]001[1]00[0][1][2][3]00[1][2][3][4][5]00[0][1]12j j j j j j c c h h h h h h c c h h h h n c n h h h h h h c ---?? ??????????????? ???=??????????????--?????????????? L L M M M M M M M M O O M L 以上矩阵等式左面是进行二抽样的结果,是分解的低频部分。同理,对 [0][1]2 j j n c c -L j 于分解的高频部分有如下矩阵形式: j [][][]11 100[0][1][2][3][4][5]0 01[1]00[0][1][2][3]00[1][2][3][4][5]00[0][1]12j j j j j d d g g g g g g d d g g g g n d n g g g g g g d ---???? ????????????? ???=? ?????? ???????--?????????????? L L M M M M M M M M O O M L 分解程序: lenx=size(x,2);%x 为一维向量 lenh=size(h,2);h=[h,zeros(1,(lenx-lenh))];g=[g,zeros(1,(lenx-lenh))]; r1(1)=sum(h.*x); r2(1)=sum(g.*x); for k=1:1:(lenx/2-1) %循环求出下一级低频和高频分量 h=[h(end-1:end),h(1:(end-2))]; r1(k+1)=sum(h.*x); g=[g(end-1:end),g(1:1:(end-2))]; r2(k+1)=sum(g.*x); end y=[r1,r2]; 对于重构算法,其等效形式为 [][][] 1(2)(2)j j j n n c n h n k c k g n k d k -=-+-∑∑上式等号右边部分实质上是对变量的数字卷积运算,程序采用频域相乘代替卷积,重建程k 序为 y=ifft(fft(c3,lenx).*fft(h,lenx))+ ifft(fft(d3,lenx).*fft(g,lenx));

相关主题