文档库 最新最全的文档下载
当前位置:文档库 › 如何为matlab添加工具包 (自动保存的)

如何为matlab添加工具包 (自动保存的)

如何为matlab添加工具包 (自动保存的)
如何为matlab添加工具包 (自动保存的)

为Matlab添加工具包

我电脑上matlab的路径所在。

D:\Program Files\MATLAB\R2012a\toolbox\mbc\mbcview\@cgtools\@inversionpane

首先说说添加到matlab搜索路径好处:1 对n——你只需要存储一个副本,就可以在其他地方使用。具体来说,假设你在数据盘D上新建了两个目录abc和def,这两个工程(每个目录下的所有程序相应地称为一个工程)都需要调用同一个(些)函数(简称工具箱),这时候,如果你没有把该工具箱添加到matlab的搜索路径下,则需要分别把工具箱中所有用到的文件都复制到目录abc和def下才能正确运行。这显然浪费空间,所以,matlab提供了一个搜索路径(默认在matlab安装目录下的toolbox中),只要把工具箱对应的整个文件夹复制到搜索路径对应的目录下,并且通知matlab一声(把该路径正确添加到搜索路径中),就可以在abc和def中使用这个工具箱了(即无论你的工程文件在哪个目录(有效的目录)下都可以访问这个工具箱中的函数)。下面就以matlab安装目录下的toolbox目录作为默认的添加路径进行详细说明。

1. 如何添加工具箱?

以下是添加工具箱的方法:(论坛很多人转载过,这里就不作区分了,下面的举例也一样)

如果是Matlab安装光盘上的工具箱,重新执行安装程序,选中即可。如果是单独下载的工具箱,则需要把新的工具箱(以下假设工具箱名字为svm)解压到toolbox目录下,然后用addpath或者pathtool把该工具箱的路径添加到matlab的搜索路径中,最后用which newtoolbox_command.m来检验是否可以访问。如果能够显示新设置的路径,则表明该工具箱可以使用了。具体请看工具箱自己代的README文件。

1.1 举例:

要添加的工具箱为svm,则解压后,里边有一个目录svm,假设matlab安装在D:/MATLAB6p5,将svm目录拷贝至D:/MA TLAB6p5/toolbox,然后运行matlab,在命令窗口输入addpath D:/MATLAB6p5/toolbox/svm回车,来添加路径。然后在svm目录下,任意找一个m文件,以svcinfo.m为例,在命令窗口中输入which svcinfo.m。如果显示出该文件路径,如D:/MATLAB6p5/toolbox/svm/svcinfo.m,则安装成功,当然也可以在命令窗口输入path来查看。

上面的说明和例子基本上介绍了在matlab中如何添加工具箱,下面是其他补充:

1.2 添加方式总结:

事实上,有两种添加工具箱到matlab搜索路径的方法:其一是用代码,其二是用界面。其实无论用哪种方法,都是修改pathdef.m这个文件,阁下如果是高手,可以直接打开该文件修改,呵呵,对此这里不作讨论。

1.2.1 代码方式:

1.2.1.1 适用于添加下载的工具箱(别人的):

在命令窗口输入addpath D:/MA TLAB6p5/toolbox/svm 或者

addpath(…D:/MATLAB6p5/toolbox/svm?);

但是这种方法只能添加svm目录,如果该目录下有其他子文件夹,并且运行时候“隐式”调用到这些子文件夹(例如假设svm目录下存在子文件夹matdata,该子文件夹下有logo.mat 这个文件,且在m文件代码中使用了诸如load logo 这样的句子,即没有显式给出logo.mat 的具体路径,则称为“隐式”),则不能正确访问。因此,有必要在添加时使用以下语句把svm 目录下所有文件夹都添加到搜索路径中:

程序代码

addpath(genpath('D:/MATLAB6p5/toolbox/svm'));

另外,如果只使用以上代码,则退出matlab后,新添加的路径不会被保存下来,下次重新启动matlab后又需要重新添加。可以用savepath来解决这个问题,即在命令窗口中使用savepath 便可。不过保存路径操作只对matlab 2006a、2006b有效(应该对版本7.0以上的都有效,因没有测试,所以不敢肯定),对6.5版本的matlab无效(该版本没有savepath这个命令)。

1.2.1.2 适用于添加自己的工具箱(即工具箱自己编写,然后希望别人下载后当运行主文件时自动把路径添加到matlab搜索路径中):

在主文件中加入如下代码;

程序代码

sCurrPath = fileparts(mfilename('fullpath'));

addpath(genpath(sCurrPath)); %如果该工具箱没有其他子目录,则可以不需要用genpath savepath; %这句可根据各人需要自行选择,相信上一节的解释已经很清楚

1.2.2 界面方式:

首先把主界面调出来,有两种方式,一种是在命令窗口输入pathtool,另一种是在matlab菜单调用(File -> Set Path…)。打开主界面后,相信不用太多解释了。Add Folder… 或者Add with subfolders… 就可以了,添加完毕后,如果需要保存该路径,则在close前save一下就可以了。

这种方式的好处是如果路径有问题,matlab会马上报错,告诉用户添加失败。

2 工具箱添加失败:

2.1 work目录和toolbox目录问题:

你当然可以单独把一个或多个文件(不含文件夹)放在work目录下来实现“1对n”,因为work目录是其中一个matlab默认的搜索路径,但显然不能包含文件夹,如果包含文件夹,则同样需要把该文件夹添加到搜索路径中。相反,你不能单独把一个或多个文件(不含文件夹)放在toolbox目录下来实现“1对n”,因为toolbox这个目录并非matlab的一个默认搜索

路径,除非你把toolbox文件夹添加到搜索路径中。

2.2 由于路径名称而导致添加失败的总结:

2.2.1 路径存在空格:

错误:addpath C:/Program Files/MATLAB/R2006b/toolbox/finity

正确:addpath(…C:/Program Files/MATLAB/R2006b/toolbox/finity?) 或者使用界面方式添加

说明:在6.5版本的matlab不推荐使用带空格的路径,因为matlab6.5的安装路径是不允许有空格的,因此不晓得带空格的工具箱路径会出现什么问题。7.0以上应该没有问题。

界面方式则估计没有问题,有问题matlab会自动报错的。

2.2.2 路径存在中文:

用addpath和界面方式均可以成功添加,但不推荐,最好使用英文路径。

2.2.3 路径存在“@”字符:

均不成功,不要使用“@”字符

小结:出现其他与添加相关的错误时,用标准的路径和文件名试试吧。

3 正确添加了工具箱,但运行调用时出错:

3.1 版本问题:

对于工具箱检测到matlab版本不兼容的问题,先引用一下happy教授的回复:

=====================happy================================

这个是有用的,估计是作者考虑到随着matlab的升级会出现不兼容的问题,因此加了类似的设置error('unsupported matlab version. please send an email.');以提示大家。从这一设置上看4.x和5.x版本的是完全没有问题的,之后的版本可能会出现问题,是否真的会出现需要进行测试

=========================================================

我也遇到过这类问题(如3.3节提到的spm5,下载得到的文件如果遇到2006版本的matlab 则无法成功运行),但不是matlab的直接回复说“版本不支持”,而是普通的语法出错。我的经验是根据错误提示调试一下,看看问题出在哪里,然后再对程序作相应修改。例如在我的问题中,由于不支持最新的版本,所以2006a和2006b版本分别用下面的语句进行检查:strcmp(version('-release'),'2006a') 和strcmp(version('-release'),'2006b')。

3.2 程序中其他语法错误:

估计部分语法不兼容,例如7.0版本以上的matlab可以使用&&、||、@(x)等等之类的符号,但是在6.5版本下无效,这种错误也需要自己手动修改一下代码。

3.3 工具箱中的函数重名问题:

Happy教授也提到过,除了改名,没有太好的办法。但是如果改的地方不止一个,例如遇到该文件进行了多次的自我调用(一个典型例子是以switch 和case语句进行区分不同的操作),或者其他文件存在对该文件的调用时,这是个很头痛的事情。根据我的经验,也没有找到太好的解决办法。以我所用的两个工具箱为例,它们的文件夹名字不同(一个是spm2,

一个是spm5),但是里面的主m文件名字都一样,为spm.m,如果两个工具箱同处于matlab 的搜索路径中,会导致其中一个工具箱失效,更别说两者之间通过切换来进行调用了。我一般的解决方法是安装两个matlab,例如一个是6.5版,一个是2006版,把两个工具箱分别添加到不同的matlab中,这样就可以启动不同版本的matlab使用不同版本的工具箱了,呵呵,算是一个补救的方法吧。

3.4 找不到m文件的问题:

如果你已经把工具箱正确添加到搜索路径下,这种情况一般不会发生。也就是说,通过“文件夹copy -> 运行matlab ->添加路径”步骤后,该文件夹下所有文件应该都可以访问到。但是,当你对该文件夹下的m文件更新(包括修改和新增)了以后,此时如果你不重启matlab,则可能会出现找不到m文件的问题(特别是该工具箱中的文件没有依赖关系,它们只是被放在一起方便调用,当你新增一个m文件到该文件夹下而不重启matlab的时候,会造成这一新增m文件访问失败)。解决这个问题的方法之一显然是重启matlab,如果你不想重启,也可用第二个方法:在命令窗口输入: rehash toolbox ,“强制”matlab刷新toolbox目录下的所有文件,这样就可以正确访问了。

MatLab在中学数学教学中的应用

MatLab在中学数学教学中的应用 摘要:多媒体教学受到人们的日益重视,制作多媒体课件的能力日趋成为衡量一个教师教学能力的标准之一。MatLab功能强大且简单易用,本文首先对MatLab的发展历史和基本组成框架进行了简单介绍。在此基础上,利用MabLab函数绘制了学数学教学过程中常见的二维和三维函数。并得出结论认为,MatLab适用于中学多媒体课件的制作。 关键词:多媒体教学中学数学MatLab 1 引言 随着计算机技术的发展,多媒体教学越来越受到人们的重视。现代教育理论认为[1]:全面实施素质教育,传统教学陈旧的教学手段和简单的教学技术在当今世界的多层次教学、演示教学、实验教学等现代化课堂教学中就显得力不从心。实验心理学家赤瑞特拉通过大量的实验证实:人类获取的信息83%来自视觉,11%来自听觉,1.5%来自触觉,这三个加起来达到95.5%。可见如何充分利用这三者来提高教学质量是人类认知心理学的要求。 多媒体计算机辅助教学是指利用多媒体计算机,综合处理和控制符号、语言、文字、声音、图形、图像、影像等多种媒体信息,把多媒体的各个要素按教学要求,进行有机组合并通过屏幕或投影机投影显示出来,同时按需要加上声音的配合,以及使用者与计算机之间的人机交互操作,完成教学或训练过程。Matlab 是美国MathWorks 公司自20 世纪80 年代中期推出的数学软件,具有优秀的数值计算能力和卓越的数据可视化能力。尽管MatLab 并不是一专门的教学软件,但其强大的绘图功能使得数学教学中的抽象概念直观易解。 2 多媒体教学特点 多媒体技术的特性主要包括信息载体的多样化、集成性和交互性三个方面[2]。信息载体的多样化指的就是信息媒体的多样化多媒体就是要把机器处理的信息多样化或多维化, 使之在信息交互的过程中, 具有更加广阔和更加自由的空间。多媒体的集成性主要表现在两个方面,即多媒体信息媒体的集成和处理这些媒体的设备的集成,。对于前者而言,各种信息媒体尽管可能会是多通道的输入或输出,但应该成为一体。对于后者而言,指的是多媒体的各种设备应该成为一体。多媒体的交互性则是指用户在使用多媒体过程中可以与之进行交互,输入目标参数,从而得到理想中的多媒体信息输出。 多媒体技术的特性决定了多媒体教学如下特点: 1)教学手段集成化 多媒体计算机集激光唱盘、录像机、电视机和计算机控制于一体, 即可以充分利用语音和电视教学的优势, 又有计算机交互式教学的特点,克服了传统教学手段三个“一”(一支粉笔、一本书、一张嘴)的单一性缺点。 2)教学方式多样化

MATLAB自适应滤波去噪

《MATLAB自适应滤波去噪》 课程设计报告 1.课程设计目的 此次课程设计目的是为了让我们学会使用MATLAB进行计算机仿真,使用自适应滤波法设计一个语音去噪声电路。培养我们的电路设计思路及其算法,明白理论与实践相结合的重要性,培养了我们的实际操作能力以及锻炼我们对实际问题的分析与解决的能力。 2.课程设计内容 2.1 LMS自适应算法原理 自适应过程一般采用典型LMS自适应算法,但当滤波器的输入信号为有色随机过程时,特别是当输入信号为高度相关时,这种算法收敛速度要下降许多,这主要是因为输入信号的自相关矩阵特征值的分散程度加剧将导致算法收敛性能的恶化和稳态误差的增大。此时若采用变换域算法可以增加算法收敛速度。变换域算法的基本思想是:先对输入信号进行一次正交变换以去除或衰减其相关性,然后将变换后的信号加到自适应滤波器以实现滤波处理,从而改善相关矩阵的条件数。因为离散傅立叶变换DFT 本身具有近似正交性,加之有FFT快速算法,故频域分块LMS FBLMS 算法被广泛应用。 FBLMS算法本质上是以频域来实现时域分块LMS算法的,即将时域数据分组构成N个点的数据块,且在每块上滤波权系数保持不变。其原理框图如图2所示。FBLMS 算法在频域内可以用数字信号处理中的重叠保留法来实现,其计算量比时域法大为减少,也可以用重叠相加法来计算,但这种算法比重叠保留法需要较大的计算量。块数据的任何重叠比例都是可行的,但以50%的重叠计算效率为最高。对FBLMS算法和典

型LMS算法的运算量做了比较,并从理论上讨论了两个算法中乘法部分的运算量。本文从实际工程出发,详细分析了两个算法中乘法和加法的总运算量,其结果为: 复杂度之比=FBLMS实数乘加次数/LMS实数乘加次数=(25Nlog2N+2N-4)/[2N(2N-1)] 采用ADSP的C语言来实现FBLMS算法的程序如下: for(i=0;i<=30;i++) {for(j=0;j<=n-1;j++) {in[j]=input[i×N+j;] rfft(in,tin,nf,wfft,wst,n); rfft(w,tw,wf,wfft,wst,n); cvecvmlt(inf,wf,inw,n); ifft(inw,t,O,wfft,wst,n); for(j=0,j<=N-1;j++) {y[i×N+j]=O[N+j].re; e[i×N+j]=re fere[i×N+j]-y[i×N+j]; temp[N+j]=e[i×N+j;}

Matlab文件读取和写函数总结

Matlab读取文件函数总结 1.load读取方式 a.基本说明: 只能读取数值数据,不能读取含文本的数据;日期按数值读取。 b.调用方式: a=load(filename); c.有无分隔符限制: 无需输入分隔符,可自动识别空格、逗号、分号、制表符。 d.能否自定义读取范围: 不能。 e.适用文件类型: txt、csv。 2.importdata读取方式 a.基本说明: 可读取数值数据和含文本的数据,但是要求文本在数据的第一行或第一列。返回值分为数值部分(data)和文本部分(textdata) b.调用方式: a=importdata(filename,delm,nheaderlines); filename:文件名(如果文件在其他路径下,文件名前需加所在路径。) delm:分隔符 nheaderlines:从第nheaderlines+1行开始读取数值数据。 c.有无分隔符限制: 多列数据时需输入分隔符。若不输入分隔符,整行会被作为字符串放入一列。 d.能否自定义读取范围: 可从某一行开始读取数值数据。若使用importdata按钮,则可自定义读取范围和设置数据类型。 f.适用文件类型 txt、xls、xlsx、csv。 3.textscan读取方式 a.基本说明: 可对列按照自定义格式读取数据,必须输入每列的读取格式,可跳过某个列或几列。 按数值读取时,缺少值以NaN填补;按字符读取时,缺少值以空格填补。返回值按列放入元胞数组。 b.调用方式: c = textscan(fid,'format',n,'param',value) fid:文件指针。使用textscan函数时需先使用fopen函数打开数据文件,返回给fid 文件若不再使用,则需用fclose(fid)关闭文件。 ‘format’:定义每列的读取格式。例如%s表示按字符串读取、%d表示按整数读取、%D 按日期读取、%*表示跳过该列。level%u8表示将level1读取成1,去掉level。 ‘param’,value:这两个参数成对出现。例如’Delimiter’,’s’表示按分隔符为’,’进行读取。 c.有无分隔符限制 可自定义分隔符,不是必须的。 d.能否自定义读取范围:

自适应滤波LMS与RLS地matlab实现

MATLAB 仿真实现LMS 和RLS 算法的二阶AR 模型 及仿真结果分析 一、题目概述:二阶AR 模型如图1a 所示,可以如下差分方程表示: )()()2()1()()(21n d n v n x a n x a n v n x +=----= (1) 图1a 其中,v(n)是均值为0、方差为0.965的高斯白噪声序列。 , 为描述性参数, .95,0,195.021=-=a a 设x(-1)=x(-2)=0,权值 , =0.04①推导最优 滤波权值(理论分析一下)。②按此参数设置,由计算机仿真模拟权值收敛曲线并画出,改变步长在此模拟权值变化规律。③对仿真结果进行说明。④应用RLS 算法再次模拟最优滤波权值。 解答思路: (1)高斯白噪声用normrnd 函数产生均值为0、方差为0.965的正态分布随机1*N 矩阵来实现。随后的产生的信号用题目中的二阶AR 模型根据公式(1)产生,激励源是之前产生的高斯白噪声。 (2)信号长度N 取为2000点,用以观察滤波器权值变化从而估计滤波器系数,得到其收敛值。 (3)仿真时分别仿真了单次LMS 算法和RLS 算法下的收敛性能以及100次取平均后的LMS 和RLS 算法的收敛性能,以便更好的比较观察二者的特性。 (4)在用不同的分别取3个不同的 值仿真LMS 算法时, 值分别取为

0.001,0.003,0.006;用3个不同的λ值仿真RLS 算法时λ值分别取为1,0.98,0.94,从而分析不同步长因子、不同遗忘因子对相应算法收敛效果的影响。 二、 算法简介 1.自适应算法的基本原理 自适应算法的基本信号关系如下图所示: 图 1b 自适应滤波器框图 输入信号x(n)通过参数可调的数字滤波器后产生输出信号y(n),将其与参考信号d(n)进行比较,形成误差信号e(n)。e(n)通过某种自适应算法对滤波器参数进行调整,最终是e(n)的均方值最小。当误差信号e(n)的均方误差达到最小的时候,可以证明信号y(n)是信号d(n)的最佳估计。 2. LMS 算法简介 LMS 算法采用平方误差最小的原则代替最小均方误差最小的原则,信号基本关系如下: 1 ()()() ()()()(1)()2()()(0,1,2,....1) N i i i y n w n x n i e n d n y n w n w n e n x n i i N μ-=-=-+=+-=-∑ (2) 写成矩阵型式为: ()()()()()() (1)()2()() T y n W n X n e n d n y n W n W n e n X n μ==-+=+ (3) 式(3)中,W(n) 为n 时刻自适应滤波器的权值, 011()[(),(),....()]T N W n w n w n w n -=,N 为自适应滤波器的阶数,本设计中取为2000;X( n) 为n 时刻自适应滤波器的参考输入矢量,由最近N 个信号采样值构成,()[(),(1),....(1)]T X n x n x n x n N =--+;d ( n) 是期望的输出值;e ( n) 为自适应滤波器的输出误差调节信号(简称失调信号) ;μ是控制自适应速度与稳定性的增益常数,又叫收敛因子或步长因子。

matlab文件操作及读txt文件(fopen,fseek,fread,fclose

matlab文件操作及读txt文件(fopen,fseek,fread,fclose) matlab文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下:λ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。λ λ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。λ λ‘a’:在打开的文件末端添加数据。文件不存在则创建。 λ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。

2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose 函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 >> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen('d:\test.bin','wb') %以二进制数据写入方式打开文件 fid =3 %其值大于0,表示打开成功 >> fwrite(fid,a,'double') ans = 9 %表示写入了9个数据 >> fclose(fid)

自适应波束形成与Matlab程序代码注解

1.均匀线阵方向图 (1)matlab 程序 clc; clear all; close all; imag=sqrt(-1); element_num=32;%阵元数为8 d_lamda=1/2;%阵元间距d与波长lamda的关系 theta=linspace(-pi/2,pi/2,200); theta0=0;%来波方向 w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]'); for j=1:length(theta) a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]'); p(j)=w'*a; end patternmag=abs(p); patternmagnorm=patternmag/max(max(patternmag)); patterndB=20*log10(patternmag); patterndBnorm=20*log10(patternmagnorm); figure(1) plot(theta*180/pi,patternmag); grid on; xlabel('theta/radian') ylabel('amplitude/dB') title([num2str(element_num) '阵元均匀线阵方向图','来波方向为' num2str(theta0*180/pi) '度']); hold on; figure(2) plot(theta,patterndBnorm,'r'); grid on; xlabel('theta/radian') ylabel('amplitude/dB') title([num2str(element_num) '阵元均匀线阵方向图','来波方向为' num2str(theta0*180/pi) '度']); axis([-1.5 1.5 -50 0]);

Matlab文件操作及读txt文件(fopen,fseek,fread,fclose)

Matlab文件操作及读txt文件(fopen,fseek,fread,fclose) matlab文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,…打开方式?) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: λ…r?:只读方式打开文件(默认的方式),该文件必须已存在。 …r+?:读写方式打开文件,打开后先读后写。该文件必须已存在。λλ…w?:打开后写入数据。该文件已存在则更新;不存在则创建。 …w+?:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。λ λ…a?:在打开的文件末端添加数据。文件不存在则创建。

…a+?:打开文件后,先读入数据再添加数据。文件不存在则创建。 另外,在这些字符串后添加一个“t”,如…rt?或…wt+?,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen 函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(…all?)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据

自适应载波同步及其Matlab仿真

成都理工大学工程技术学院本科毕业论文 自适应载波同步及其Matlab仿真 作者姓名: 专业名称: 指导老师: 年月日

摘要 自适应滤波算法的研究是现在社会自适应信号处理中最为活跃的研究课题之一。找寻收敛速度快,计算简单,数值稳定性好的自适应滤波算法是研究人员不断努力追求的目标。本设计在论述自适应滤波基本原理的基础上,说明了几种当前几种典型的自适应滤波算法和应用。并对这几种典型自适应滤波算法的性能特点进行简单的比较,给出了算法性能的综合评价。 载波同步是无线通信接收机的主要功能之一,其对通信系统质量的提高至关重要。随着新算法涌现和芯片处理速度的提高,不同的解决方案不断的提出。自适应载波同步是一种依据自适应算法的同步方法,内容新颖。本课题在介绍自适应算法和载波同步问题的基础上,详细讨论了平方差分环路法和锁相环路法,具体包括代价函数、代价函数的导数、迭代公式和原理图等,并在论文的第三部分给出了这两种方法的Matlab仿真。仿真结果验证了这两种方法在跟踪载波相位方面是满足要求的,且收敛速度较快。 关键词:自适应滤波载波同步平方差分环路锁相环路法

Abstact The research of adaptive filtering algorithm is one of the most activity tasks, the goal that researchers want to pursue is to find an adaptive filtering algorithm that converge fast and compute simplely. Based on the basis adaptive filtering principle, this paper introduces several typical adaptive algorithms and applications, then compares those algorithm's characters and gives the orithm performance evaluation. Carrier synchronization is one of the main functions of Wireless communications receiver,it is essential for the improvement in the quality of the communication system. With the emergence of new algorithms and the speed improvement of chip processing, different solutions is proposed continuously. Adaptive carrier synchronization is a synchronization method based on adaptive algorithms, and its content is innovative. Based on the introducing of adaptive algorithm and carrier synchronization, this issue has a detailed discussion of the square difference method and the PLL loop method, including its cost function, cost function derivative, iterative formula and schematic, etc. And the third part of the paper gives two methods of Matlab simulation.Simulation results show the two methods with tracking the carrier phase is to meet the requirements, and convergence speedly. Keywords:adaptive filter, carrier synchronization, differential circle square , phase-locked loop method

【方法】Matlab中常见数学函数的使用

【关键字】方法 给自己看的----Matlab的内部常数(转) 2008/06/19 14:01 [Ctrl C/V--学校 ] MATLAB基本知识 Matlab的内部常数 pi 圆周率 exp(1) 自然对数的底数e i 或j 虚数单位 Inf或inf 无穷大 Matlab的常用内部数学函数

没有发现matlab有这一命令,不过我们可以调用maple的命令,调用方法如下: 首先加载maple中的student函数库,加载方法为:maple(’with(student)’) 然后运行maple中的配方命令,格式为: maple(’completesquare(f)’)把f配方,其中f为代数表达式或代数方程 mapl e(’completesquare(f,x)’)把f按指定的变量x配方,其中f同上 maple(’completesquare(f,{x,y,...})’)把f按指定的变量x,y,...配方maple(’completesquare(f,[x,y,...])’)把f按指定的变量x,y,...配方, 如何用matlab进行多项式运算 (1)合并同类项 syms 表达式中包含的变量 collect(表达式,指定的变量) (2)因式分解 syms 表达式中包含的变量factor(表达式) (3)展开 syms 表达式中包含的变量 expand(表达式) 我们也可在matlab中调用maple的命令进行多项式的运算,调用格式如下: maple(’maple中多项式的运算命令’) 如何用matlab进行分式运算 发现matlab只有一条处理分式问题的命令,其使用格式如下: [n,d]=numden(f)把符号表达式f化简为有理形式,其中分子和分母的系数为整数且分子分母不含公约项,返回结果n为分子,d为分母。注意:f必须为符号表达式 不过我们可以调用maple的命令,调用方法如下: maple(’denom(f)’)提取分式f的分母 maple(’numer(f)’)提取分式f的分子 maple(’normal(f)’ ) 把分式f的分子与分母约分成最简形式 maple(’expand(f)’) 把分式f的分子展开,分母不变且被看成单项。 maple(’factor(f)’) 把分式f的分母和分子因式分解,并进行约分。 如何用Matlab进行因式分解 syms 表达式中包含的变量factor(表达式) 如何用Matlab展开 syms 表达式中包含的变量expand(表达式) 如何用Matlab进行化简 syms 表达式中包含的变量simplify(表达式) 如何用Matlab合并同类项 syms 表达式中包含的变量collect(表达式,指定的变量) 如何用Matlab进行数学式的转换 调用Maple中数学式的转换命令,调用格式如下: maple(‘Maple的数学式转换命令’)

用matlab实现自适应图像阈值分割最大类方差法代码

%用matlab实现自适应图像阈值分割最大类方差法代码clear; warning off; SE = strel('diamond',4); BW1 = imread('cameraman.tif'); BW2 = imerode(BW1,SE); BW3 = imdilate(BW2,SE); BW4 = BW1-BW3; %rgb转灰度 if isrgb(BW4)==1 I_gray=rgb2gray(BW4); else I_gray=BW4; end figure,imshow(I_gray); I_double=double(I_gray);%转化为双精度 [wid,len]=size(I_gray); colorlevel=256; %灰度级 hist=zeros(colorlevel,1);%直方图 %threshold=128; %初始阈值 %计算直方图 for i=1:wid for j=1:len m=I_gray(i,j)+1; hist(m)=hist(m)+1; end end hist=hist/(wid*len);%直方图归一化 miuT=0; for m=1:colorlevel miuT=miuT+(m-1)*hist(m); end xigmaB2=0; for mindex=1:colorlevel threshold=mindex-1; omega1=0; omega2=0; for m=1:threshold-1 omega1=omega1+hist(m); end omega2=1-omega1; miu1=0; miu2=0; for m=1:colorlevel if m

基于MATLAB_Simulink机器人鲁棒自适应控制系统仿真研究

第18卷第7期 系统仿真学报?V ol. 18 No. 7 2006年7月Journal of System Simulation July, 2006 基于MATLAB/Simulink机器人鲁棒自适应控制系统仿真研究 高道祥,薛定宇 (东北大学教育部暨辽宁省流程工业综合自动化重点实验室,沈阳 110004) 摘要:介绍了一种在MATLAB/Simulink环境下进行机器人鲁棒自适应控制系统仿真的方法,利 用Matlab软件强大的数值运算功能,将系统模型用Matlab语言编写成M-Function(或S-Function) 文件,通过User-Defined-Function模块嵌入到Simulink仿真环境中,可以充分发挥Simulink模块 实时的动态仿真功能,简化仿真模型的设计,修改和调整。基于M-Function建立机器人系统模型 的方法可以推广到其他复杂控制系统的建模,SimMechanics在建立多自由度连杆机器人受控对象 仿真模型时,简单可靠。 关键词:机器人;Matlab/Simulink;SimMechanics;仿真;鲁棒自适应控制 中图分类号:TP391.9 文献标识码:A 文章编号:1004-731X(2006) 07-2022-04 Simulation Research of Robust Adaptive Control System for Robotic Manipulators Based on MATLAB/Simulink GAO Dao-xiang, XUE Ding-yü (Key Laboratory of Process Industry Automation, Ministry of Education, Northeast University, Shenyang 110004, China) Abstract: A simulation method of robust adaptive control was proposed for the robotic manipulator system. The method took the advantage of the powerful computing function of Matlab to programme M-function (or S-Function) for the system model by Matlab language and embedded it to the Simulink by User-Defined-Function module. The real time dynamic simulating function of Simulink would be exerted adequately and the design, modification and adjust of the system model could be greatly simplified. The method of constructing manipulator control system model based on M-Function could be generalized to the other complicated control system and SimMechanics would make the n-links manipulator model conveniently and credibly. Key words: robotic manipulator; Matlab/Simulink; SimMechanics; simulation; robust adaptive control 引言 一个新的控制算法在付诸使用之前,无论从经济原因还是技术角度,都需要经过仿真阶段来测试控制系统的性能和缺陷。尤其对复杂系统控制的研究,虽然仿真并不能说明控制算法是绝对合理与可靠的,但随着仿真技术的发展,仿真的确是系统设计必不可少的中间步骤。 Matlab/Simulink以其强大的数学运算能力,方便实用的绘图功能及语言的高度集成性成为系统仿真和自动控制领域首选的计算机辅助设计工具。Simulink可以将可视化的模块很方便地组成系统模型的仿真框图,对于使用普通Simulink模块不易搭建的复杂控制系统,用Matlab语言编写M-Function或S-Function文件,通过User-Defined-Function 模块嵌入到Simulink仿真环境中,大大扩充了Simulink的功能。对于机器人这类的复杂控制系统,通过Simulink可以很方便的建立其仿真模型。 机器人控制系统仿真模型中不易采用普通Simulink模块搭建的部分是控制器模型和受控对象—机器人模型,可以采用Matlab语言编写M-Function实现控制器和机器人模型。 收稿日期:2005-05-09 修回日期:2005-08-02 作者简介:高道祥(1972-),男,山东蓬莱人,博士生,研究方向为机器人鲁棒自适应控制。薛定宇(1963-),男,辽宁沈阳人,教授,博导,研究方向为控制系统CAD,机器人控制。另外,由于SimMechanics提供了机构的仿真模块集,对于n自由度的连杆机器人,也可以采用SimMechanics模块进行组建。 1 n连杆机器人的仿真模型 如果不考虑摩擦力等外界干扰的作用,机器人的动力学方程可由下式描述, τ= + +) ( ) , ( ) (q G q q q C q q M (1) 式中,q q q , ,是1 × n向量,表示各个关节的位置,速度,加速度。) (q M是n n×阶对称正定的惯量矩阵。q q q C ) , (是1 × n向量,表示离心力和哥氏力项。) (q G是1 × n向量,表示重力项。τ表示外界输入的控制力矩。由式(1)可以看出,机器人的动力学模型是一个高度复杂,强耦合的非线性时变方程,尤其模型的复杂程度随着自由度的增加呈指数上升趋势。因此,在用Matlab/Simulink进行机器人控制系统的仿真研究时,需要寻求一种简单可靠却行之有效的方法建立机器人控制系统仿真模型。 采用M-Function定制的Simulink模块与普通模块一样具有输入和输出向量,控制器与机器人受控对象的仿真模型函数可用如下关系式描述, ) , , , , (0q q q q q f d d d = τ(2) ) , , (1τ q q f q =(3)

Matlab的各种数据读取、文件读写等操作汇总

Matlab 的各种数据读取、文件读写等操作汇总 MATLAB 提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定:?用户所执行的 操作是导入数据还是导出数据;?数据的格式为文本格式、 二进制格式还是如HDF 之类的标准格式。将数据导入MATLAB 中最容易的方法就是使用导入数据模板(Import Wizard) ,使用该模板时不需要知道数据的格式,只需指定包含这些数据的文件,然后导入模板会自动处理文件内容。本章重点内容如下:? 文件的打开和关闭? 文本文件的读取?存写ASCII数据?二进制数据的读取? 二进制数据的存写? 使用I/O文件函数进行数据读写?MAT 文件的读写 2.1 文件的打开和关闭2.1.1 文件的打开无论是要读写ASCII 码文件还是二进制文件,都必须先用fopen 函数将其打开,在默认情况下,fopen 以二进制格式打开文件,它的使用语法如下:fopen ('filename', 'mode') 其中filename 表示要读写的文件名称,mode 则表示要对文件进行的处理方式,如下:rt :以只读方式(Reading)打开文件wt:以只写方式(Writing)打开文件at:以追加方式(Appending)打开文件,新内容将从原文件后面续写r+t:以同时读写方式打开文件w+t :以同时读写创建文件,原文件内容被清除

a+t :以同时读和追加(Reading and Appdending) 方式,原文件内容被保留,新内容将从原文件的后面开始At :以读写方式打开或创建文件,适用于对磁带介质文件的操作Wt :以写入方式打 开或创建文件,原文件内容被清除,适用于磁带介质文件的操作fopen 函数有两个返回值,一个是返回一个文件标志(file Identifier) ,它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是-1,则代表fopen无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message ,用于返回无法打开文件的原因。为了安全起见,最好在每次使用fopen 函数时,都测试其返回值是否为有效值。下面以脚本m 文件为例来声明文件的打开。例 2-1 %exam1.m[f,message]=fopen('fileexam1', 'r')if f==-1disp (message); % 显示错误信息end 若文件fileexam1 不存在,则显示如下信息。Cannot open file.existence?permissions?memory?... 例2-2 %exam2.m[f,message]=fopen('fileexam2', 'r');if f==-1disp (message); % 显示错误信息else disp(f);end 若文件fileexam2 存在,则返回f值。 2.1.2 文件的关闭一旦完成文件的读写,最好关闭文件,以便对其进行其他操作。这时就可以使用fclose 函数来关闭文件,其适用语法如下:fclose(f) 。其中 f 为打开文件的标志,若fclose 函数返回值为0 ,则表示成功关闭 f 标志的文件;若返回值为-1,

MATLAB数学软件在数学课堂中的应用

论文 摘要 MATLAB数学软件是集数值计算、图形处理等功能为一体的数学应用软件.传统的数学教学比较枯燥,而MATLAB数学软件应用于数学课堂中,给教学上带来了很大的方便,本文介绍利用MATLAB软件在运算、绘图方面的优势应用于基础数学教学里的数学分析、线性代数、概率统计、数值分析、运筹学、解析几何等.从而使得学生的积极性以及主动学习的兴趣大大增加. 关键词:MATLAB;数学教学;应用

MATLAB数学软件在数学课堂中的应用 The Application Of The Matlab in Mathematic Teaching ABSTRACT MATLAB is mathematical software capable of numerical computation, graphics pr -ocessing and so on. The traditional mathematical education is very boring while the ap--plication of MATLAB mathematical software in the mathematics class has brought gre -at convenience to teaching. This paper introduces how the strengths of the software, su-ch as operation and drawing, are used in mathematics teaching of mathematical analysi -s, linear algebra, probability statistics, numerical analysis, operational research, analyti-c geometry etc. As a result, it will enormously increase students’ enthusiasm and interes -t in study. Key words:MATLAB;mathematical education; application

自适应滤波器MATLAB仿真

自适应滤波器 MATLAB仿真 摘要 : 本文介绍了自适应滤波器的工作原理,以及推导了著名的LMS( Least mean squares )算法。以一个例子演示了自适应滤波器的滤波效果。实验结果表明,该滤波器滤波效果较好。 关键词:自适应滤波器 MATLAB7.0 LMS 算法 Simulate of adaptive filter based on MATLAB7.0 Abstract: This article described the working principle of adaptive filter and deduced the well-known LMS algorithm. Take an example to demonstrate the adaptive filters filtering effects. The results show that the filter has an effective way to filter single. Key words: LMS algorithm Adaptive Filter Matlab7.0 1引言 由 Widrow B 等提出的自适应滤波理论,是在维纳滤波、卡尔曼滤波等线性滤波基础上发展起来的一种最佳滤波方法。由于它具有更强的适应性和更优的滤波性能,从而广泛应用于通信、系统辨识、回波消除、自适应谱线增强、自适应信道均衡、语音线性预测和自适应天线阵等诸多领域[1]。自适应滤波器最大的优点在于不需要知道信号和噪声的统计特性的先验知识就可以实现信号的最佳滤波处理。本文通过一个具体例子和结果论证了自适应滤波器的滤波效果。 2自适应滤波原理及 LMS算法 2.1 自适应滤波原理 图 1 自适应滤波原理图 在自适应滤波器中,参数可调的数字滤波器一般为 FIR 数字滤波器, IIR 数字滤波器或格型数字滤波器。自适应滤波分 2 个过程。第一,输入信号想 x(n) 通过参数可调的数字滤波器后得输出信号 y(n) ,y(n) 与参考信号 d(n) 进行比较得误差信号 e(n) ;第二,通过一种自适应算法和 x(n) 和 e(n) 的值来调节参数可调的数字滤波器的参数,即加权系

matlab文件操作及读txt文件

matlab文件操作及读txt文件 matlab文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: λ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。λλ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。λ λ‘a’:在打开的文件末端添加数据。文件不存在则创建。 λ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。

另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 >> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen('d:test.bin','wb') %以二进制数据写入方式打开文件

相关文档