基于GA和MP的信号稀疏分解matlab程序

合集下载

matlab信号分解算法

matlab信号分解算法

matlab信号分解算法Matlab信号分解算法是一种用于将信号分解为不同频率分量的方法。

这种算法可以用于多种应用,包括信号处理、模式识别和数据压缩等领域。

本文将介绍Matlab信号分解算法的原理和使用方法。

在信号处理中,信号分解是一种重要的技术,它可以将复杂的信号分解为简单的分量,从而更好地理解和处理信号。

Matlab信号分解算法是一种基于小波变换的方法,它利用小波基函数来表示信号。

小波基函数具有时间和频率的局部性质,可以很好地表示信号的瞬时特征和频率特征。

Matlab信号分解算法的基本原理是将信号分解为多个尺度的小波系数。

首先,将信号与小波基函数进行卷积运算,得到一组小波系数。

然后,将小波系数分解为低频分量和高频分量,再对低频分量进行进一步的分解。

这个过程可以迭代进行,直到得到所需的分解层数。

Matlab信号分解算法的使用方法如下。

首先,加载信号数据并进行预处理,例如去除噪声或趋势项。

然后,选择适当的小波基函数和分解层数。

常用的小波基函数有Haar、Daubechies和Symlet等。

分解层数的选择取决于信号的特性和应用的要求。

接下来,使用Matlab的小波变换函数对信号进行分解,得到一组小波系数。

最后,根据应用的需要,选择合适的小波系数进行重构,得到分解后的信号。

Matlab信号分解算法在信号处理中有广泛的应用。

它可以用于信号的滤波和去噪,通过选择适当的小波系数进行重构,可以实现信号的平滑和去除噪声。

此外,信号分解还可以用于信号的特征提取和模式识别。

通过分解信号并提取不同频率分量的特征,可以更好地理解信号的结构和内容。

另外,信号分解还可以用于数据压缩。

由于小波系数具有稀疏性,可以通过保留较大的小波系数,而将较小的小波系数置零,从而实现信号的压缩。

Matlab信号分解算法是一种重要的信号处理技术,可以将信号分解为不同频率分量,具有广泛的应用前景。

通过选择适当的小波基函数和分解层数,可以实现信号的滤波、去噪、特征提取和数据压缩等功能。

matlab 稀疏 cholesky 分解

matlab 稀疏 cholesky 分解

MATLAB稀疏Cholesky分解1. 介绍MATLAB是一种常用的数学软件,其在矩阵运算和线性代数方面有着强大的功能。

稀疏矩阵是指大部分元素为零的矩阵,而Cholesky分解是一种用于解决对称正定矩阵的线性方程组的方法。

本文将探讨MATLAB中稀疏Cholesky分解的原理、使用方法以及其在实际应用中的意义。

2. 稀疏矩阵与Cholesky分解稀疏矩阵是指矩阵中大部分元素为零,只有少数非零元素。

在实际问题中,许多矩阵具有这种特性,比如网络数据传输矩阵、有限元法中的刚度矩阵等。

对于这种稀疏矩阵,传统的直接方法(如高斯消去法)效率较低,因此需要使用特殊的方法进行计算。

Cholesky分解是一种有效的方法,特别适用于对称正定矩阵。

对于一个对称正定矩阵A,Cholesky分解将该矩阵表示为A=LL^T,其中L为下三角矩阵。

与传统的LU分解相比,Cholesky分解能够减少一半的计算量,因此在求解线性方程组时具有更高的效率和稳定性。

3. MATLAB中的稀疏Cholesky分解在MATLAB中,稀疏矩阵可以使用sparse函数进行定义。

而Cholesky分解则可以通过chol函数进行求解。

对于稀疏矩阵A,可以使用[ch, p] = chol(A, 'lower')来进行Cholesky分解,其中ch为下三角矩阵,p为置换矩阵。

通过Cholesky分解后,可以得到A=ch*ch^T。

MATLAB中对稀疏矩阵进行Cholesky分解的函数使用非常方便,能够高效地处理大规模稀疏矩阵的计算问题。

MATLAB还提供了一系列的稀疏矩阵运算函数,如sparse乘法、转置、求逆等,为稀疏矩阵的计算提供了强大的支持。

4. 实际应用稀疏矩阵和Cholesky分解在实际应用中有着广泛的意义。

以金融衍生品定价为例,通常会涉及大规模的稀疏矩阵和线性方程组的求解。

Cholesky分解能够极大地提高计算效率,为复杂金融问题的求解提供了重要支持。

利用FFT实现基于MP的信号稀疏分解

利用FFT实现基于MP的信号稀疏分解

利用 F T实现基于 MP的信号稀疏 分解 F
尹忠 科。 邵 君 。 Per a drh y s。 ir V n eg e nt e
。西南交通大学计 算机 与通信 工程学 院 成都 603) ( 10 1
。信 号处理 实验 室,瑞士联邦 高工 ( 桑) 1 1 瑞士) ( 洛 05
摘 要 该文研究基于 Ma hn us i MP方 法实现 的信号稀疏分解算法,通过对信号稀疏分解中使用的过完备 t igP r t ) c u (
原子库 结构特性 的分析,提 出了一种新 的信 号稀疏 分解算法。该算法首先通过利用原子库 的结构特性 ,很好 地处 理 了稀疏分 解过程中计算量和存储量之 间的关系 。在 此基 础上,把信号稀疏分解 中计算量很大 的内积运 算转 换成
c mp t r p e d me r . e h s a g r h c n e t e i - o s mig i n rp o u t c lu a in n s a s o u e ’ s e d a mo S n y Th n t i lo i m o v r v r t t s y me c n u n n e r d c a c lt s i p r e o
互相关运算 ,最后用 F T实现互相关运算 ,从而大大提 高了信号稀疏分解的速度。算法的有效性为实验 结果所 证 F
实。 关键词 信号处理,稀疏表示,稀疏分解 ,Mac i us iMP ,F T thn P ru ( ) F g t 文献标识码 :A 文章编号 :10 -8 62 0 )40 1・5 0 95 9 (0 60 ・6 40
中图分类号 :T 1. N9 1 2 7
M P s d Si na pa s c m po ii n w ih FFT Ba e g l S r e De o sto t

基于GA和MP的信号稀疏分解matlab程序

基于GA和MP的信号稀疏分解matlab程序

基于GA和MP的信号稀疏分解%% MA TLAB script for MP algorithm based on FFT%%%******************** Preparation part *****************************%%************************** part 1:imput signal ***************************Im=wavread('FEM');Im=Im';%**************************** part 2: set parameters ***********************f1=50;f2=160;fs=200;iterative_number=100; % the matching pursuit processing iterative number[a,N]=size(Im); % the longth of signal and the longth of atoms; Na_base=2; % scale: the scale is determined by a and j;j_min=0;j_max=log2(N);u_base=1/2; % the transmission or displacement u should determined as followingv_base=pi; % the frequency vk_min=0;w_base=pi/6; % the phase wi_min=0;i_max=12;%%************************ initialization ********************************signal=Im;signal_reconstruct=zeros(1,N);signal_r=Im;%*************** wipe off the direct current vector *************************signal_reconstruct=(1/N)*sum(signal);signal_r=signal-signal_reconstruct;%*********************start calculation*********************************for n=1:iterative_number% ********the following program uses one subroutine to select the best atom**************[proj,scale,translation,freq,phase]=gas(signal_r,N,a_base,j_min,j_max,u_base,p_min,v_base,k_mi n,w_base,i_min,i_max);%******reconstruct the best atom from the parameters got by above subroutine*********t=0:N-1;t=(t-translation)/scale;g=(1/sqrt(scale))*exp(-pi*t.*t).*cos(freq*t+phase);g=g./sqrt(sum(g.*g)); %normalizatiom the atom%***********reconstruct signal and renew the residual**********************signal_reconstruct=signal_reconstruct+proj*g;signal_r=signal_r-proj*g;%************************* the figure of result ************************subplot(221);plot(signal); % original siganlsubplot(222);plot(g); %the atomsubplot(223);plot(signal_r); %the residualsubplot(224);plot(signal_reconstruct); %reconstruct signalend% ****************** end of file *************************************function[proj,scale,translation,freq,phase]=gas(signal_r,N,a_base,j_min,j_max,u_base,p_min,v_base,k_mi n,w_base,i_min,i_max)% this subroutine is to select in the dictionary the best atom suited the signal or the residual of the signal% the searching method used is Genetic Algorithm (GA).% the following parameters are used in GA% n : number of Chromosomes% Ngen: the number of generation% vec: the solution for one atom% v(1) : the scale% v(2) : location or translation% v(3) : frequency% v(4) : phase% Genetic algorithm : INITIALIZATION 初始化% proj_trans :to determine which projection is biggest% n : number of chromosomes% Ngen: the number of generation%********************** set parrameter*********************************** n=21;Ngen=30;pool=zeros(4,n);sig=[1111];proj_trans=zeros(1,n);res=ones(1,n);proj=0;bi=ones(4,1); % bi: lower boundsbs=ones(4,1); % bs: upper boundsbi(1)=j_min;bi(2)=p_min;bi(3)=k_min;bi(4)=i_min;bs(1)=j_max;bs(2)=N;bs(3)=N;bs(4)=i_max;og=ones(4,n); % og(i,:) : vector of n i-genesng=ones(4,n); % ng: new generation vector%******************** create the initial population***************************og(1,:)=round((bs(1)-bi(1))*rand(1,n)+bi(1));og(2,:)=round((bs(2)-bi(2))*rand(1,n)+bi(2));og(3,:)=round((bs(3)-bi(3))*rand(1,n)+bi(3));og(4,:)=round((bs(4)-bi(4))*rand(1,n)+bi(4));%******************the main part of Genetic algorithm ****************for c=1:Ngenfor d=1:ns=a_base^og(1,d);u=og(2,d);v=og(3,d)*(1/s)*v_base;w=og(4,d)*w_base;t=0:N-1;t=(t-u)/s;g=(1/sqrt(s))*exp(-pi*t.*t).*cos(v*t+w);g=g/sqrt(sum(g.*g));proj_trans(d)=sum(signal_r.*g);res(d)=abs(proj_trans(d));end%******** place the best atom (biggest projection in the first position) *********[best, e]=max(res);ng(:,1)=og(:,e);og(:,e)=og(:,n);og(:,n)=ng(:,1);temp_proj=proj_trans(e);temp_res=res(e);proj_trans(e)=proj_trans(n);proj_trans(n)=temp_proj;res(e)=res(n);res(n)=temp_res;%**************competition between the adjacent atoms*********************** for d=2:2:n-1[best,e]=max(res(d-1:d));pool(:,d/2)=og(:,d-rem(e,2));end;%*****************creation of the pool for crossover ******************** for d=1:(n-1)/2f=ceil((n-1)/2*rand);Inter=round(rand(4,1));ng(:,d+1)=pool(:,d).*Inter+pool(:,f).*(1-Inter);end%***************** Mutations of the winner ********************* sigm=sig(:,ones(n-((n-1)/2+1),1));ngm=ng(:,1);ngm=ngm(:,ones(n-((n-1)/2+1),1));ng(:,(n-1)/2+2:n)=round(ngm+(rand(4,n-((n-1)/2+1))-0.5).*sigm);%************************* bounding into the limits ********************** for l=1:4while max(ng(l,:))>bs(l)[rw,lw]=max(ng(l,:));ng(l,lw)=bs(l);endwhile min(ng(l,:))<bi(l)[rw,lw]=min(ng(l,:));ng(l,lw)=bi(l);endendog=ng;%******************* stable or not? ********************************* nog=og(:,1);nog=nog(:,ones(1,n));nog=abs(og-nog);nog=max(max(nog));%***************** if yes, create a new generation *********************** if nog<4og(1,2:n)=round((bs(1)-bi(1))*rand(1,n-1)+bi(1));og(2,2:n)=round((bs(2)-bi(2))*rand(1,n-1)+bi(2));og(3,2:n)=round((bs(3)-bi(3))*rand(1,n-1)+bi(3));og(4,2:n)=round((bs(4)-bi(4))*rand(1,n-1)+bi(4));endend%************ output the results*************************************** s=a_base^ng(1,1);u=ng(2,1);v=ng(3,1)*(1/s)*v_base;w=ng(4,1)*w_base;t=0:N-1;t=(t-u)/s;g=(1/sqrt(s))*exp(-pi*t.*t).*cos(v*t+w);g=g/sqrt(sum(g.*g));proj=sum(signal_r.*g);scale=a_base^ng(1,1);translation=ng(2,1);freq=v;。

Matlab中的稀疏表示和字典学习技巧

Matlab中的稀疏表示和字典学习技巧

Matlab中的稀疏表示和字典学习技巧引言稀疏表示和字典学习技巧是图像处理和机器学习领域中经常使用的重要技术。

在Matlab中,有着丰富的工具箱和函数可以实现稀疏表示和字典学习,为我们提供了强大的能力来处理高维数据。

本文将介绍Matlab中的稀疏表示和字典学习技巧,并通过一些实例来说明它们的应用。

一、稀疏表示技术稀疏表示是指通过一组基向量的线性组合来表示数据的一种方法。

在Matlab中,我们可以使用字典工具箱(Dictionary Toolbox)来实现稀疏表示。

稀疏表示可以应用于各种领域,如图像处理、信号处理和数据压缩等。

在图像处理中,稀疏表示可以用于图像压缩和图像恢复等任务。

通过选择合适的字典和优化算法,我们可以将一张高分辨率图像表示为一组稀疏的线性组合。

在Matlab中,我们可以使用稀疏编码函数(sparse coding function)来实现这个过程。

具体步骤包括:选择字典、计算稀疏系数和重构图像。

通过调整字典的大小和优化算法的参数,我们可以得到不同精度的稀疏表示结果。

在信号处理中,稀疏表示可以用于信号降噪和信号恢复等任务。

通过将信号表示为一组稀疏的基向量的线性组合,我们可以有效地提取信号的特征和重建信号。

在Matlab中,我们可以使用稀疏表示工具箱(Sparse Representation Toolbox)来实现这个过程。

具体步骤包括:选择字典、计算稀疏系数和重构信号。

通过调整字典的大小和优化算法的参数,我们可以得到更准确和稳定的信号表示结果。

二、字典学习技巧字典学习是指通过训练数据来学习最优的字典的一种方法。

在Matlab中,我们可以使用字典学习工具箱(Dictionary Learning Toolbox)来实现字典学习。

字典学习可以应用于各种领域,如图像处理、文本处理和语音处理等。

在图像处理中,字典学习可以用于图像分类和图像重构等任务。

通过学习最优的字典,我们可以得到更好的特征提取和重构结果。

基于GA和过完备原子库划分的MP信号稀疏分解算法

基于GA和过完备原子库划分的MP信号稀疏分解算法

分解算法, 出了基于过 完备原子库集合划分 的、 两阶段搜索 的、 提 分 遗传 算法快速寻找 MP过程 中每 一步分解 的最佳原子, 在
稀疏分解重建信 号质量不变的条件 下, 高 了稀疏分解的速度 。算法的有效性为实验 结果所证实。 提 关键词 稀疏分解 匹配追踪 过完备原子库 文献标志码 A 信号集合划分 遗传算法( A) G
子, 然后将 信号表 示为这些 最佳原 子 的线 性组合 。 设待分解 信号f∈H , H为有 限维 H le 空 问 , i r bt
D为过完 备原子库 ( ∈H) D 。首先 , 过完 备原 子 从 库 D 中选 出 与 待 分 解 信 号 最 匹 配 的 原 子 g g。 , , 。,
⑥ 2 0 Si eh E gg 0 8 c.T c. n n ̄
基于 G A和过 完 备原 子 库 划分 的 MP信 号稀 疏 分解 算法
高 瑞 徐华楠 胡 钢
( 北 工 业 大 学理 学 院应 用 数学 系 ,西 安 7 0 7 ) 西 10 2
摘 要
信号稀疏分解计算量大是 阻碍其实 时应用的主要 因素。研 究基于 匹配追踪 ( t i usi 方法实现的信号稀疏 Ma hn P r t c g u)
量 。对 每次 分 解 后 的 残 余 量不 断 进 行 上 面 的分 解
过程 , 即 R :<R g >g + , () 3
MP信号 稀疏 分 解 的 不 足之 处 是 计 算 量 非 常 大 , 其
根本原 因在于 , 基于 MP的信号稀 疏 分解 中, 在 每一
步都要计 算 信 号 或 信号 分 解 的 残 余 在 过 完 备 原 子 库 中的每一个原 子上 的 投影 。现 提 出一 种基 于 G A 和过完备 原子 库划 分 的 M P信 号 稀 疏分 解 算 法 , 以 解 决信号 稀疏分解 计算量 大 的问题 。

Matlab中的稀疏信号处理技巧

Matlab中的稀疏信号处理技巧

Matlab中的稀疏信号处理技巧随着科技的不断进步和数据的快速增长,信号处理成为了一项重要的技术。

在实际的应用中,往往需要处理大量的数据,而其中的信号通常是稀疏的。

稀疏表示是一种有效地表示信号和数据的方法,而Matlab提供了许多强大的稀疏信号处理工具和技巧。

稀疏信号处理的核心思想是将信号表示成一个具有较少非零元素的稀疏向量。

在Matlab中,我们可以通过使用稀疏矩阵来表示稀疏信号。

稀疏信号处理的首要任务之一就是将高维输入数据转化为低维表示,从而减少计算量和存储空间的消耗。

一种常用的稀疏信号处理技巧是压缩感知。

它通过在采样过程中加入一些额外的约束条件,可以在较少的采样点上恢复出原始信号。

Matlab提供了一些有效的压缩感知算法,如OMP(Orthogonal Matching Pursuit)、BP(Basis Pursuit)和L1-magic等。

这些算法可以通过稀疏矩阵计算库(如SPGL1和YALL1等)来实现。

除了压缩感知外,稀疏字典学习也是一种有效的信号处理技巧。

字典学习的目标是从信号样本中学习出一个稀疏字典,使得信号能够用这个字典的基来表示。

在Matlab中,我们可以使用稀疏字典学习工具包,如KSVD和OMPBox来进行字典学习和信号重构。

在实际的应用中,常常需要对信号进行降噪处理。

稀疏表示也可以用于信号降噪,通过选择合适的字典和约束条件,可以将噪声成分压缩到尽可能小的程度。

在Matlab中,我们可以使用一些稀疏降噪算法,如TVD(总变差)、LASSO(Least Absolute Shrinkage and Selection Operator)和BM3D(Block-Matching 3D)等来进行信号降噪处理。

此外,稀疏信号处理还可以用于图像处理领域。

图像中的像素也可以看做是一个稀疏信号,通过将图像进行稀疏表示,可以提取出图像的关键特征。

在Matlab中,我们可以使用一些稀疏图像处理库,如SPGLoM、NLM(Non-local Means)和TV(总变差)等来实现对图像的处理和分析。

稀疏矩阵求解的MATLAB程序

稀疏矩阵求解的MATLAB程序

稀疏矩阵求解的MATLAB 程序一、问题描述求解方程Aq =b 。

其中取:23220483,.32859540960656501Sym b ⎡⎤⎧⎫⎢⎥⎪⎪-⎢⎥⎪⎪⎪⎪⎢⎥==-⎨⎬⎢⎥⎪⎪-⎢⎥⎪⎪⎢⎥-⎪⎪⎣⎦⎩⎭A 二、 求解过程1. LDLT 分解:直接调用课上程序2. 求解方程Ly =b ,L 为下三角阵。

过程:y(1)=b(1)Loop k from 2 to n11()()(,)()k j y k b k L k j y j -==-∑ End Loop3. 求解方程Dz =y ,过程:Loop k from1 to nz(k)=y(k)End Loop4. 求解方程T L q =z ,T L 为上三角过程:Initialize q=bLoop k from n to 211111(1)(1)(1)'1'1*0k k k k k k k k l q q q q q l ----⨯-⎡⎤⎡⎤⎛⎫⎛⎫⎢⎥⎢⎥ ⎪ ⎪=-⎢⎥⎢⎥ ⎪ ⎪ ⎪ ⎪⎢⎥⎢⎥⎝⎭⎝⎭⎣⎦⎣⎦Refresh q End loop三、问题描述求解方程Aq =b 。

其中取:23220483,.32859540960656501Sym b ⎡⎤⎧⎫⎢⎥⎪⎪-⎢⎥⎪⎪⎪⎪⎢⎥==-⎨⎬⎢⎥⎪⎪-⎢⎥⎪⎪⎢⎥-⎪⎪⎣⎦⎩⎭A 四、 求解过程5. LDLT 分解:直接调用课上程序6. 求解方程Ly =b ,L 为下三角阵。

过程:y(1)=b(1)Loop k from 2 to n11()()(,)()k j y k b k L k j y j -==-∑ End Loop7. 求解方程Dz =y ,过程:Loop k from1 to nz(k)=y(k)End Loop8. 求解方程T L q =z ,T L 为上三角过程:Initialize q=bLoop k from n to 211111(1)(1)(1)'1'1*0k k k k k k k k l q q q q q l ----⨯-⎡⎤⎡⎤⎛⎫⎛⎫⎢⎥⎢⎥ ⎪ ⎪=-⎢⎥⎢⎥ ⎪ ⎪ ⎪ ⎪⎢⎥⎢⎥⎝⎭⎝⎭⎣⎦⎣⎦ Refresh qEnd loop程序:clc; clear all; close all%输入数据A=[23 -20 48 3 -28 59 -40 96 6 -56 50];NA = [1 3 6 8 11];b=[2;3;5;0;1];%LDLT 分解n = size(NA,2);for k=2:n%%%%u(1:(k-1)) = A(k,1:(k-1))';u = zeros(k-1,1);Lk = k - (NA(k)-NA(k-1)) + 1;u(Lk:(k-1)) = A((NA(k-1)+1):(NA(k)-1));%%%%for i=2:(k-1)for i=(Lk+1):(k-1)%%%% u(i) = u(i) - A(i,1:(i-1))*u(1:(i-1));Li = i - (NA(i)-NA(i-1)) + 1;u(i) = u(i) - A((NA(i-1)+1):(NA(i)-1))*u(Li:(i-1));end%%%%for i=1:(k-1)for i=Lk:(k-1)%%%% A(k,i) = u(i)/A(i,i);A(NA(k)-k+i) = u(i)/A(NA(i));end%%%%A(k,k) = A(k,k) - A(k,(1:k-1))*u(1:(k-1));A(NA(k)) = A(NA(k)) - A((NA(k-1)+1):(NA(k)-1))*u(Lk:(k-1)); endD=A(NA)L=A;L(NA)=ones(1,n);Lload matlab.mat%Get A,L,D for testing, which saved a priori%求解方程L*y=by=b; s=2;for k=2:nLk = k - (NA(k)-NA(k-1)) + 1;for j=Lk:k-1y(k)=y(k)-L(s)*y(j);s=s+1;ends=s+1;endyLL*y-b%求解D*z=y,D是对角阵z=zeros(n,1);for k=1:nz(k)=y(k)/D(k);endzDD*z-y%求解方程L'*q=zq=z; s=NA(n)-1;for k=n-1:-1:1for j=k:-1:k-(NA(k+1)-NA(k)-1)+1 q(j)=q(j)-q(k+1)*L(s);s=s-1;ends=s-1;endqAA'*q-b%比较残差。

使用Matlab进行稀疏信号恢复的基本步骤

使用Matlab进行稀疏信号恢复的基本步骤

使用Matlab进行稀疏信号恢复的基本步骤近年来,稀疏信号恢复成为了信号处理领域的热门研究方向。

稀疏信号指的是信号中的大部分分量都是为0或接近于0的情况。

稀疏信号恢复则是通过仅获取有限数量的测量样本,恢复原始的稀疏信号。

Matlab作为一种功能强大的数学软件,提供了许多工具和函数,可以帮助我们在稀疏信号恢复问题上取得良好的结果。

本文将介绍使用Matlab进行稀疏信号恢复的基本步骤。

第一步是导入数据。

在Matlab中,我们通常使用向量来表示信号。

可以通过使用Matlab提供的内置函数,如`load`、`csvread`等,导入已有的信号数据,或者通过生成函数,如`randn`、`linspace`等,生成模拟的信号数据。

导入数据后,我们可以通过绘图函数,如`plot`、`stem`等,可视化信号数据,确保数据导入的正确性。

第二步是选择合适的稀疏性表示模型。

稀疏信号恢复问题的关键在于找到一个合适的稀疏性表示模型。

稀疏表示模型的选择取决于信号的特征和所使用的算法。

在Matlab中,常用的稀疏性表示模型包括小波变换、离散余弦变换、K-SVD等。

根据信号的特征,我们可以选择合适的稀疏性表示模型,并利用Matlab提供的相关函数进行信号的变换和逆变换。

第三步是选择合适的稀疏信号恢复算法。

在Matlab中,有许多经典的稀疏信号恢复算法可供选择,如基于L1范数的最小化算法(如LASSO、OMP、Basis Pursuit等)和基于迭代优化的算法(如IST、FISTA等)。

根据实际情况,我们可以选择合适的算法,并利用Matlab提供的相应函数实现稀疏信号的恢复。

第四步是确定测量矩阵。

稀疏信号恢复算法通常需要使用测量矩阵来获取信号的有限样本。

测量矩阵可以是随机矩阵、波束形成矩阵等。

在Matlab中,我们可以使用`randn`函数生成随机矩阵,或者使用Matlab提供的其他工具箱中的函数生成特定类型的测量矩阵。

第五步是进行稀疏信号恢复。

在Matlab中进行信号压缩和稀疏表示的技术

在Matlab中进行信号压缩和稀疏表示的技术

在Matlab中进行信号压缩和稀疏表示的技术信号压缩和稀疏表示是信号处理中重要的技术,可以用来减少数据存储和传输的需求,同时提高信号处理的效率。

在Matlab中,有许多方法可以实现信号的压缩和稀疏表示。

本文将介绍一些常用的技术和方法,并探讨它们的优缺点以及在实际应用中的适用范围。

一、信号压缩的基本原理信号压缩的基本原理是利用信号的冗余性来减少数据的存储和传输需求。

在数字信号中,冗余性主要分为两种类型:时域冗余和频域冗余。

时域冗余指的是信号在时间轴上存在重复的信息,频域冗余则是指信号在频率轴上存在冗余的能量。

常见的信号压缩方法包括哈夫曼编码、经典的离散余弦变换(DCT)以及小波变换等。

在Matlab中,可以利用这些方法对信号进行压缩。

二、哈夫曼编码哈夫曼编码是一种基于概率统计的信号压缩方法。

它利用信号中出现频率较高的字符用较短的编码表示,出现频率较低的字符用较长的编码表示,从而减少编码的长度。

在Matlab中,可以使用"Huffman"函数来实现哈夫曼编码。

哈夫曼编码的优点是简单易懂,压缩效率较高。

但是它的缺点也很明显,即编码和解码的过程较为耗时,而且需要首先对信号进行统计分析,得到各个字符出现的概率分布。

三、离散余弦变换(DCT)离散余弦变换是一种利用信号的频域冗余性进行压缩的方法。

它将信号转换到频域,然后只保留少部分重要的频率成分,舍弃掉一部分不重要的频率成分,从而实现信号的压缩。

在Matlab中,可以使用"dct"函数实现离散余弦变换。

离散余弦变换的优点是可以实现较好的信号压缩效果,对保留光谱信息有较好的适应性。

但是它的缺点也比较明显,即离散余弦变换的计算复杂度较高,需要较大的计算量。

四、小波变换小波变换是一种用于信号压缩和稀疏表示的常见方法。

它将信号分解为不同尺度和频率的小波基函数,然后通过把小幅度的系数设为零来实现信号的稀疏表示,从而实现信号的压缩。

在Matlab中进行稀疏矩阵处理与加速

在Matlab中进行稀疏矩阵处理与加速

在Matlab中进行稀疏矩阵处理与加速随着科学技术的不断发展,矩阵在各个领域中得到了广泛的应用,其中稀疏矩阵是一种非常重要的矩阵类型。

稀疏矩阵是指矩阵中绝大部分元素为0,仅有少部分非零元素的一类特殊矩阵。

在许多实际问题中,稀疏矩阵能够提供高效的存储、计算和处理方法,因此在科学计算和工程领域中被广泛使用。

Matlab作为一种强大的数值计算环境,对稀疏矩阵的处理提供了丰富的功能和工具。

在本文中,我们将探讨在Matlab中进行稀疏矩阵处理和加速的方法和技巧。

首先,让我们来了解一下稀疏矩阵在Matlab中的表示方式。

在Matlab中,稀疏矩阵可以用两种方式表示:三元组和压缩列。

三元组表示法将矩阵中的非零元素的位置和值以三个数组的形式存储起来,分别存储行号、列号和元素值。

这种表示法的优点是可以直观地表示稀疏矩阵的结构,但是对于大规模稀疏矩阵和矩阵运算来说,存储和计算效率较低。

而压缩列表示法则将矩阵的每一列的非零元素的行号和值进行存储,以及一个指示每一列的起始位置的向量。

这种表示法的优点是存储和计算效率高,尤其适用于列向量的计算。

对于稀疏矩阵的计算,Matlab提供了一系列的函数和工具箱。

例如,可以使用spalloc函数创建一个稀疏矩阵,并为矩阵中某些位置赋予非零元素。

spalloc函数的参数包括矩阵的大小和非零元素的数量。

另外,Matlab还提供了一些基本的稀疏矩阵运算函数,例如矩阵的相加、相乘、转置等。

这些函数可以直接对稀疏矩阵进行计算,而无需转换为常规的密集矩阵表示。

在处理稀疏矩阵时,通常需要注意的一个问题是矩阵的存储和计算效率。

由于稀疏矩阵的大部分元素为0,因此存储和计算这些冗余的零元素会浪费大量的空间和计算资源。

为了提高存储效率,可以使用稀疏矩阵表示法。

而为了提高计算效率,可以使用稀疏矩阵运算函数。

此外,Matlab还提供了一些针对稀疏矩阵的优化技术,例如矩阵的压缩和分解等。

这些技术可以进一步提高稀疏矩阵的处理速度和效率。

Matlab中的稀疏表示与稀疏编码方法

Matlab中的稀疏表示与稀疏编码方法

Matlab中的稀疏表示与稀疏编码方法导语:稀疏表示与稀疏编码是一种重要的信号处理技术,它在许多领域都有着广泛的应用。

本文将以Matlab为工具,对稀疏表示和稀疏编码方法进行深入探讨。

一、引言稀疏表示与稀疏编码是一种信号处理中的重要技术。

在许多实际问题中,我们经常需要对数据进行降维、压缩或特征提取。

稀疏表示与稀疏编码能够帮助我们实现这些目标。

二、稀疏表示的基本概念稀疏表示是指用尽可能少的非零系数来表示一个信号或数据。

对于一个给定的信号x,我们可以利用一个基矩阵A和一个系数向量s,使得x ≈ As。

在稀疏表示中,我们希望s是尽可能稀疏的,也就是s中的大部分元素为零。

三、稀疏编码的基本原理稀疏编码是指通过求解一个优化问题,得到一个尽可能稀疏的系数向量s。

常见的优化问题包括L0、L1、L2等范数最小化。

在Matlab中,我们可以利用优化工具箱或者稀疏编码相关的函数来求解这些问题。

四、基于稀疏表示的图像压缩方法稀疏表示在图像压缩中有着重要的应用。

利用稀疏表示,可以将一幅图像表示为一组稀疏系数和一组基矢量的线性组合。

在Matlab中,我们可以通过使用稀疏表示相关的函数,比如OMP(Orthogonal Matching Pursuit)算法来实现图像的压缩。

五、基于稀疏表达的信号恢复方法稀疏表达也可以应用于信号恢复问题。

对于一个受到噪声干扰的信号,我们可以通过求解一个优化问题,通过最小化噪声对稀疏系数的干扰来恢复原始信号。

在Matlab中,我们可以利用各种优化方法和稀疏编码相关的函数来实现信号的恢复。

六、基于稀疏表示的特征提取方法稀疏表示还可以应用于特征提取问题。

通过对信号进行稀疏表示,我们可以得到一组稀疏系数,这些系数可以作为信号的特征。

在Matlab中,我们可以利用各种特征提取方法和稀疏编码相关的函数来实现特征的提取。

七、基于稀疏编码的模式识别方法稀疏编码在模式识别中也有重要的应用。

通过对样本数据进行稀疏编码,我们可以得到一组稀疏系数,这些系数可以作为样本的特征向量,进而用于分类或者识别。

matlab有关GA优化的例子

matlab有关GA优化的例子

matlab有关GA优化的例子核心函数:(1)function[pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数【输出参数】pop--生成的初始种群【输入参数】num--种群中的个体数目bounds--代表变量的上下界的矩阵eevalFN--适应度函数eevalOps--传递给适应度函数的参数options--选择编码形式(浮点编码或是二进制编码)[precision F_or_B],如precision--变量进行二进制编码时指定的精度F_or_B--为1时选择浮点编码,否则为二进制编码,由precision指定精度)(2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,...termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,m utFNs,mutOps)--遗传算法函数【输出参数】x--求得的最优解endPop--最终得到的种群bPop--最优种群的一个搜索轨迹【输入参数】bounds--代表变量上下界的矩阵evalFN--适应度函数evalOps--传递给适应度函数的参数startPop-初始种群opts[epsilon prob_ops display]--opts(1:2)等同于initializega 的options参数,第三个参数控制是否输出,一般为0。

如[1e-6 1 0] termFN--终止函数的名称,如[maxGenT erm]termOps--传递个终止函数的参数,如[100]selectFN--选择函数的名称,如[normGeomSelect]selectOps--传递个选择函数的参数,如[0.08]xOverFNs--交*函数名称表,以空格分开,如[arithXover heuristicXover simpleXover]xOverOps--传递给交*函数的参数表,如[2 02 32 0]mutFNs--变异函数表,如[boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation] mutOps--传递给交*函数的参数表,如[4 0 06 100 34 100 34 0 0] 注意】matlab工具箱函数必须放在工作目录下【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交*概率为0.95,变异概率为0.08 【程序清单】编写目标函数function[sol,eval]=fitness(sol,options)x=sol(1)eval=x+10*sin(5*x)+7*cos(4*x)把上述函数存储为fitness.m文件并放在工作目录下initPop=initializega(10,[0 9],fitness)生成初始种群,大小为10 [x endPop,bPop,trace]=ga([0 9],fitness,[],initPop,[1e-6 1 1],maxGenTerm,25,normGeomSelect,...[0.08],[arithXover],[2],nonUnifMutation,[2 25 3]) 25次遗传迭代运算借过为:x =7.8562 24.8553(当x为7.8562时,f(x)取最大值24.8553)注:遗传算法一般用来取得近似最优解,而不是最优解。

matlab稀疏重构

matlab稀疏重构

matlab稀疏重构
MATLAB中的稀疏重构涉及使用稀疏表示技术对信号或图像进行重建。

稀疏表示是一种信号处理方法,它利用信号在某个基向量下的稀疏性质来进行表示和重建。

在MATLAB中,可以使用稀疏表示的工具包如OMP(Orthogonal Matching Pursuit)或BP(Basis Pursuit)来实现稀疏重构。

首先,需要将信号或图像表示为稀疏形式,通常使用一组基向量来表示信号,这些基向量可以是离散余弦变换(DCT)、小波变换或字典学习等。

然后,可以使用OMP或BP等算法来计算信号在这些基向量下的稀疏表示系数。

接下来,可以根据这些系数重构原始信号或图像。

在MATLAB中,可以使用稀疏表示工具包如sparsify或yall1来实现稀疏重构。

这些工具包提供了各种稀疏表示算法的实现,同时也提供了参数调节和性能评估的功能。

另外,MATLAB还提供了丰富的信号处理和图像处理工具箱,可以辅助进行稀疏重构相关的实验和分析。

除了使用现有的工具包和函数,也可以根据具体的稀疏重构需
求编写自定义的算法和函数。

在MATLAB中,可以利用其丰富的矩阵
运算和信号处理函数来实现稀疏重构算法的开发和实现。

总之,MATLAB提供了丰富的工具和函数来支持稀疏重构的实现,可以根据具体的需求选择合适的方法和工具包进行实现和分析。


望这些信息能够帮助你更好地理解MATLAB中的稀疏重构技术。

基于GA和过完备原子库划分的MP信号稀疏分解算法

基于GA和过完备原子库划分的MP信号稀疏分解算法

< Rk f, gγk >
= sup γ∈Γ
< Rk f, gγ >
(4)
经过 n步分解后 ,信号被分解为
n- 1
∑ f =
< Rk f, gγk > gγk + Rn f
(5)
k =0
(5)式中 , Rn f是 n步分解后的逼近误差 。
在信号长度有限时 ,当 n 无限增大时 Rn f 指
数衰减为零 ,这说明在最初的几次迭代中 ,误差衰
gr ( t)
= 1g s
t - u co s( vt + w ) s
(6)
(6)式中 , g ( t) = e-πt2 是高斯窗函数 , γ = ( s, u, v,
w ) 是时频参数 。其中 , s是伸缩因子 (尺度因子 ) ,
u是平移因子 (位移因子 ) , v是原子的频率 , w 是原
子的相位 。时频参数 γ = ( s, u, v, w ) 按照下列方法
第 8卷 第 4期 2008年 2月
167121819 (2008) 420914204
科 学 技 术 与 工 程
Science Technology and Engineering
Vol. 8 No. 4 Feb. 2008
Ζ 2008 Sci. Tech. Engng.
和过完备原子库划分的 M P信号稀疏分解算法 ,在
M P的每一步中 ,用分两阶段的遗传算法搜索最佳
原子 ,具体过程如下 。
2. 3. 1 搜索最佳子库
把定义一个原子的参数组作为待寻优参数 ,这
时的原子是代表子库的原子 (称作“子库原子 ”,由
916
科 学 技 术 与 工 程

基于GA的自适应最稀疏时频分析方法及应用

基于GA的自适应最稀疏时频分析方法及应用

基于GA的自适应最稀疏时频分析方法及应用李宝庆;程军圣;吴占涛;彭延峰【摘要】为解决自适应最稀疏时频分析(ASTFA)方法中初始相位函数的选择问题,采用遗传算法(GA)对ASTFA的初始相位函数进行优化,提出了GA-ASTFA方法.进一步研究了GA-ASTFA方法抑制模态混淆的能力,分析结果表明,GA-ASTFA能较好地抑制模态混淆,分解得到的分量信号精度高,且可抑制分解中的伪分量.最后将GA-ASTFA方法用于转子碰摩故障诊断,实验分析结果表明,GA-ASTFA方法能有效提取转子碰摩故障特征信息.【期刊名称】《中国机械工程》【年(卷),期】2016(027)001【总页数】7页(P66-72)【关键词】遗传算法;自适应最稀疏时频分析;经验模态分解;模态混淆;转子碰摩【作者】李宝庆;程军圣;吴占涛;彭延峰【作者单位】湖南大学汽车车身先进设计制造国家重点实验室,长沙,410082;湖南大学汽车车身先进设计制造国家重点实验室,长沙,410082;湖南大学汽车车身先进设计制造国家重点实验室,长沙,410082;湖南大学汽车车身先进设计制造国家重点实验室,长沙,410082【正文语种】中文【中图分类】TH113.1;TH911.7转子存在局部碰摩故障时,其振动信号具有频带较宽的特点,且因边频带效应会生成具有丰富频率成分的响应。

具体来讲,转子碰摩故障的振动信号存在峰值明显的单倍转频,并伴随有转频的高阶谐波分量,同时存在相对较弱的分倍频次谐波分量,主要的次谐波分量为1/3分倍频及其倍频、1/2分倍频及其倍频,在一些情况下也会存在更高阶次的次谐波分量[1]。

实际中,当转子存在局部碰摩故障时,作为主要故障特征的次谐波分量会被转频及其倍频和噪声信号淹没。

因此,提取转子碰摩故障特征信息需要采用具有良好的抑制模态混淆的信号分析方法。

目前一般采用经验模态分解(empirical mode decomposition,EMD)方法对转子振动信号进行分解以提取故障特征信息[2]。

基于GA和过完备原子库划分的MP信号稀疏分解算法

基于GA和过完备原子库划分的MP信号稀疏分解算法

基于GA和过完备原子库划分的MP信号稀疏分解算法高瑞;徐华楠;胡钢
【期刊名称】《科学技术与工程》
【年(卷),期】2008(008)004
【摘要】信号稀疏分解计算量大是阻碍其实时应用的主要因素.研究基于匹配追踪(Matching Pursuit)方法实现的信号稀疏分解算法,提出了基于过完备原子库集合划分的、分两阶段搜索的、遗传算法快速寻找MP过程中每一步分解的最佳原子,在稀疏分解重建信号质量不变的条件下,提高了稀疏分解的速度.算法的有效性为实验结果所证实.
【总页数】4页(P914-916,920)
【作者】高瑞;徐华楠;胡钢
【作者单位】西北工业大学理学院应用数学系,西安,710072;西北工业大学理学院应用数学系,西安,710072;西北工业大学理学院应用数学系,西安,710072
【正文语种】中文
【中图分类】TN911.71
【相关文献】
1.基于余弦过完备原子库的语音信号MP稀疏分解 [J], 李雨昕
2.基于FFT的MP信号稀疏分解算法的改进 [J], 邵君;尹忠科;王建英
3.信号稀疏分解中过完备原子库的集合划分 [J], 邵君;尹忠科;王建英;张跃飞
4.基于GA和MP的信号稀疏分解算法的改进 [J], 张静;方辉;王建英;尹忠科
5.基于原子库树状结构划分的诱导式信号稀疏分解 [J], 刘丹华;石光明;高大化;周佳社
因版权原因,仅展示原文概要,查看原文内容请购买。

2009-基于MP算法的语音信号稀疏分解

2009-基于MP算法的语音信号稀疏分解

Computer Engineering and Applications计算机工程与应用2009,45(5)1引言传统的信号表示方法是基于“基”的展开,如Fourier函数或者小波函数等。

但这种建立在正交基上的信号分解有一定的局限性,即当用这一类性质特定的基函数来表达任意信号时,一旦基函数确定,对于一个信号的展开也就随之确定,往往不总能够达到好的稀疏表示效果,尤其是对于时频变化范围很广的信号,效果更差。

一种更好的信号分解方式应该是根据信号的特点,自适应地选择合适的基函数,来完成信号的分解。

因此近年来非正交分解引起人们越来越多的研究兴趣。

为了实现对信号更加灵活、简洁和自适应的表示,在小波分析的基础上,Mallat和Zhang于1993年提出基于过完备库(over-complete dictionary)的稀疏分解思想。

信号稀疏分解理论的基本思想是:通过信号在过完备库(又称冗余字典)上的分解,用来表示信号的基可以自适应地根据信号自身的结构特点灵活选取。

分解的结果将可以得到信号非常简洁的表达(即稀疏表示)。

这个过程就称为稀疏分解(Sparse decomposition)[1]。

稀疏分解一方面可以实现数据压缩的高效性,更重要的是可以利用字典的冗余特性捕捉原始信号的自然特征。

而语音信号稀疏分解也已经被成功应用于语音信号处理的多个方面,如语音压缩、语音去噪和语音识别等。

至今已经发展了多种稀疏分解算法。

常用的稀疏分解算法有匹配追踪(Matching pursuit,MP)算法[1-2]、基追踪(Basis Pur-suit,BP)算法[2]、MOF(Method of Frames)算法[3]、BOB(Basis Orthogonal Best)算法[4]。

BP算法,尤其MP算法是目前最常用的两种算法。

因此,论文研究基于匹配追踪算法的语音信号稀疏分解方法,这种算法根据语音信号的特点,利用Gabor过完备库进行稀疏分解,大大增强了信号的稀疏性,从而提高了语音信号稀疏分解具有较好的重建精度和较高的稀疏度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于GA和MP的信号稀疏分解%% MA TLAB script for MP algorithm based on FFT%%%******************** Preparation part *****************************%%************************** part 1:imput signal ***************************Im=wavread('FEM');Im=Im';%**************************** part 2: set parameters ***********************f1=50;f2=160;fs=200;iterative_number=100; % the matching pursuit processing iterative number[a,N]=size(Im); % the longth of signal and the longth of atoms; Na_base=2; % scale: the scale is determined by a and j;j_min=0;j_max=log2(N);u_base=1/2; % the transmission or displacement u should determined as followingv_base=pi; % the frequency vk_min=0;w_base=pi/6; % the phase wi_min=0;i_max=12;%%************************ initialization ********************************signal=Im;signal_reconstruct=zeros(1,N);signal_r=Im;%*************** wipe off the direct current vector *************************signal_reconstruct=(1/N)*sum(signal);signal_r=signal-signal_reconstruct;%*********************start calculation*********************************for n=1:iterative_number% ********the following program uses one subroutine to select the best atom**************[proj,scale,translation,freq,phase]=gas(signal_r,N,a_base,j_min,j_max,u_base,p_min,v_base,k_mi n,w_base,i_min,i_max);%******reconstruct the best atom from the parameters got by above subroutine*********t=0:N-1;t=(t-translation)/scale;g=(1/sqrt(scale))*exp(-pi*t.*t).*cos(freq*t+phase);g=g./sqrt(sum(g.*g)); %normalizatiom the atom%***********reconstruct signal and renew the residual**********************signal_reconstruct=signal_reconstruct+proj*g;signal_r=signal_r-proj*g;%************************* the figure of result ************************subplot(221);plot(signal); % original siganlsubplot(222);plot(g); %the atomsubplot(223);plot(signal_r); %the residualsubplot(224);plot(signal_reconstruct); %reconstruct signalend% ****************** end of file *************************************function[proj,scale,translation,freq,phase]=gas(signal_r,N,a_base,j_min,j_max,u_base,p_min,v_base,k_mi n,w_base,i_min,i_max)% this subroutine is to select in the dictionary the best atom suited the signal or the residual of the signal% the searching method used is Genetic Algorithm (GA).% the following parameters are used in GA% n : number of Chromosomes% Ngen: the number of generation% vec: the solution for one atom% v(1) : the scale% v(2) : location or translation% v(3) : frequency% v(4) : phase% Genetic algorithm : INITIALIZATION 初始化% proj_trans :to determine which projection is biggest% n : number of chromosomes% Ngen: the number of generation%********************** set parrameter*********************************** n=21;Ngen=30;pool=zeros(4,n);sig=[1111];proj_trans=zeros(1,n);res=ones(1,n);proj=0;bi=ones(4,1); % bi: lower boundsbs=ones(4,1); % bs: upper boundsbi(1)=j_min;bi(2)=p_min;bi(3)=k_min;bi(4)=i_min;bs(1)=j_max;bs(2)=N;bs(3)=N;bs(4)=i_max;og=ones(4,n); % og(i,:) : vector of n i-genesng=ones(4,n); % ng: new generation vector%******************** create the initial population***************************og(1,:)=round((bs(1)-bi(1))*rand(1,n)+bi(1));og(2,:)=round((bs(2)-bi(2))*rand(1,n)+bi(2));og(3,:)=round((bs(3)-bi(3))*rand(1,n)+bi(3));og(4,:)=round((bs(4)-bi(4))*rand(1,n)+bi(4));%******************the main part of Genetic algorithm ****************for c=1:Ngenfor d=1:ns=a_base^og(1,d);u=og(2,d);v=og(3,d)*(1/s)*v_base;w=og(4,d)*w_base;t=0:N-1;t=(t-u)/s;g=(1/sqrt(s))*exp(-pi*t.*t).*cos(v*t+w);g=g/sqrt(sum(g.*g));proj_trans(d)=sum(signal_r.*g);res(d)=abs(proj_trans(d));end%******** place the best atom (biggest projection in the first position) *********[best, e]=max(res);ng(:,1)=og(:,e);og(:,e)=og(:,n);og(:,n)=ng(:,1);temp_proj=proj_trans(e);temp_res=res(e);proj_trans(e)=proj_trans(n);proj_trans(n)=temp_proj;res(e)=res(n);res(n)=temp_res;%**************competition between the adjacent atoms*********************** for d=2:2:n-1[best,e]=max(res(d-1:d));pool(:,d/2)=og(:,d-rem(e,2));end;%*****************creation of the pool for crossover ******************** for d=1:(n-1)/2f=ceil((n-1)/2*rand);Inter=round(rand(4,1));ng(:,d+1)=pool(:,d).*Inter+pool(:,f).*(1-Inter);end%***************** Mutations of the winner ********************* sigm=sig(:,ones(n-((n-1)/2+1),1));ngm=ng(:,1);ngm=ngm(:,ones(n-((n-1)/2+1),1));ng(:,(n-1)/2+2:n)=round(ngm+(rand(4,n-((n-1)/2+1))-0.5).*sigm);%************************* bounding into the limits ********************** for l=1:4while max(ng(l,:))>bs(l)[rw,lw]=max(ng(l,:));ng(l,lw)=bs(l);endwhile min(ng(l,:))<bi(l)[rw,lw]=min(ng(l,:));ng(l,lw)=bi(l);endendog=ng;%******************* stable or not? ********************************* nog=og(:,1);nog=nog(:,ones(1,n));nog=abs(og-nog);nog=max(max(nog));%***************** if yes, create a new generation *********************** if nog<4og(1,2:n)=round((bs(1)-bi(1))*rand(1,n-1)+bi(1));og(2,2:n)=round((bs(2)-bi(2))*rand(1,n-1)+bi(2));og(3,2:n)=round((bs(3)-bi(3))*rand(1,n-1)+bi(3));og(4,2:n)=round((bs(4)-bi(4))*rand(1,n-1)+bi(4));endend%************ output the results*************************************** s=a_base^ng(1,1);u=ng(2,1);v=ng(3,1)*(1/s)*v_base;w=ng(4,1)*w_base;t=0:N-1;t=(t-u)/s;g=(1/sqrt(s))*exp(-pi*t.*t).*cos(v*t+w);g=g/sqrt(sum(g.*g));proj=sum(signal_r.*g);scale=a_base^ng(1,1);translation=ng(2,1);freq=v;。

相关文档
最新文档