当前位置:文档之家› 查看MATLAB自带函数的源代码

查看MATLAB自带函数的源代码

查看MATLAB自带函数的源代码
查看MATLAB自带函数的源代码

11月27日

如何查看MATLAB自带函数的源代码

有时候可能需要把MATLAB程序移植成C程序或者C++程序,这对与通信行业的人来说是很常见的事情,事先利用MATLAB天生具备的优越可视化环境仿真,利用MATLAB丰富的自带行数完成复杂算法的仿真,以比较不同算法之间的效率,对高效算法进行移植。

这时候往往会用到一些较为专业的函数,例如rgb2gray、fft等等,在MATLAB中我们仅是调用这些函数,不用关心MATLAB是怎么实现这些函数的,但是要想移植成C/C++程序,必须自己编写这些专业函数,如果我们可以查看这些函数在MATLAB中是如何实现的,那么对于移植效率会有很大提升。有若干种可以查看MATLAB函数源代码的方法:

1、在命令窗口中输入:type 函数名(例如type rgb2gray等),就会在命令窗口出现该函数的相关说明及源代码;

2、在命令窗口中输入:open 函数名(例如open rgb2gray等),就会打开该函数的m文件;

3、在命令窗口中输入:edit函数名(例如edit rgb2gray等),同样会打开该函数的m文件;

4、还有一种方法就是故意将原函数的参数类型或者个数写错,就会出现出错提示,点击提示出错处,也可以打开该函数的m文件;

很多大型的函数都能获得源代码,但是MATLAB里面有一些built-in函数是看不到源代码的,sort就是其中之一。这些函数是预编译好的,运行效率非常好,比如像find、min、max等频繁用到的一些函数还有很多矩阵运算函数都是built-in函数。

matlab,isrgb函数源代码

function y = isrgb(x) %ISRGB Return true for RGB image. % FLAG = ISRGB(A) returns 1 if A is an RGB truecolor image and % 0 otherwise. % % ISRGB uses these criteria to determine if A is an RGB image: % % - If A is of class double, all values must be in the range % [0,1], and A must be M-by-N-by-3. % % - If A is of class uint8 or uint16, A must be M-by-N-by-3. % % Note that a four-dimensional array that contains multiple RGB % images returns 0, not 1. % % Class Support % ------------- % A can be of class uint8, uint16, or double. If A is of % class logical it is considered not to be RGB. % % See also ISBW, ISGRAY, ISIND. % Copyright 1993-2003 The MathWorks, Inc. % $Revision: 1.15.4.2 $ $Date: 2003/08/23 05:52:55 $ wid = sprintf('Images:%s:obsoleteFunction',mfilename); str1= sprintf('%s is obsolete and may be removed in the future.',mfilename); str2 = 'See product release notes for more information.'; warning(wid,'%s\n%s',str1,str2); y = size(x,3)==3; if y if isa(x, 'logical') y = false; elseif isa(x, 'double') % At first just test a small chunk to get a possible quick negative m = size(x,1); n = size(x,2); chunk = x(1:min(m,10),1:min(n,10),:); y = (min(chunk(:))>=0 && max(chunk(:))<=1); % If the chunk is an RGB image, test the whole image

Matlab工具箱中地BP与RBF函数

Matlab工具箱中的BP与RBF函数 Matlab神经网络工具箱中的函数非常丰富,给网络设置合适的属性,可以加快网络的学习速度,缩短网络的学习进程。限于篇幅,仅对本章所用到的函数进行介绍,其它的函数及其用法请读者参考联机文档和帮助。 1 BP与RBF网络创建函数 在Matlab工具箱中有如表1所示的创建网络的函数,作为示例,这里只介绍函数newff、newcf、newrb和newrbe。 表 1 神经网络创建函数 (1) newff函数 功能:创建一个前馈BP神经网络。 调用格式:net = newff(PR,[S1 S2...S Nl],{TF1 TF2...TF Nl},BTF,BLF,PF) 参数说明: ?PR - R个输入的最小、最大值构成的R×2矩阵; ?S i–S NI层网络第i层的神经元个数; ?TF i - 第i层的传递函数,可以是任意可导函数,默认为'tansig',

可设置为logsig,purelin等; ?BTF -反向传播网络训练函数,默认为'trainlm',可设置为trainbfg,trainrp,traingd等; ?BLF -反向传播权值、阈值学习函数,默认为'learngdm'; ?PF -功能函数,默认为'mse'; (2) newcf函数 功能:创建一个N层的层叠(cascade)BP网络 调用格式:net = newcf(Pr,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) 参数同函数newff。 (3) newrb函数 功能:创建一个径向基神经网络。径向基网络可以用来对一个函数进行逼近。newrb函数用来创建一个径向基网络,它可以是两参数网络,也可以是四参数网络。在网络的隐层添加神经元,直到网络满足指定的均方误差要求。 调用格式:net = newrb(P,T,GOAL,SPREAD) 参数说明: ?P:Q个输入向量构成的R×Q矩阵; ?T:Q个期望输出向量构成的S×Q矩阵; ?GOAL:均方误差要求,默认为0。 ?SPREAD:分散度参数,默认值为1。SPREAD越大,网络逼近的函数越平滑,但SPREAD取值过大将导致在逼近变化比较剧烈的函

matlab代码大全

MATLAB主要命令汇总 MATLAB函数参考 附录1.1 管理用命令 函数名功能描述函数名功能描述 addpath 增加一条搜索路径 rmpath 删除一条搜索路径 demo 运行Matlab演示程序 type 列出.M文件 doc 装入超文本文档 version 显示Matlab的版本号 help 启动联机帮助 what 列出当前目录下的有关文件 lasterr 显示最后一条信息 whatsnew 显示Matlab的新特性 lookfor 搜索关键词的帮助 which 造出函数与文件所在的目录 path 设置或查询Matlab路径 附录1.2管理变量与工作空间用命令 函数名功能描述函数名功能描述 clear 删除内存中的变量与函数 pack 整理工作空间内存 disp 显示矩阵与文本 save 将工作空间中的变量存盘 length 查询向量的维数 size 查询矩阵的维数 load 从文件中装入数据 who,whos 列出工作空间中的变量名 附录1.3文件与操作系统处理命令 函数名功能描述函数名功能描述 cd 改变当前工作目录 edit 编辑.M文件 delete 删除文件 matlabroot 获得Matlab的安装根目录 diary 将Matlab运行命令存盘 tempdir 获得系统的缓存目录 dir 列出当前目录的内容 tempname 获得一个缓存(temp)文件 ! 执行操作系统命令 附录1.4窗口控制命令 函数名功能描述函数名功能描述 echo 显示文件中的Matlab中的命令 more 控制命令窗口的输出页面format 设置输出格式 附录1.5启动与退出命令 函数名功能描述函数名功能描述 matlabrc 启动主程序 quit 退出Matlab环境 startup Matlab自启动程序 附录2 运算符号与特殊字符附录 2.1运算符号与特殊字符 函数名功能描述函数名功能描述

matlab遗传算法工具箱函数及实例讲解

matlab遗传算法工具箱函数及实例讲解 最近研究了一下遗传算法,因为要用遗传算法来求解多元非线性模型。还好用遗传算法的工箱予以实现了,期间也遇到了许多问题。借此与大家分享一下。 首先,我们要熟悉遗传算法的基本原理与运算流程。 基本原理:遗传算法是一种典型的启发式算法,属于非数值算法范畴。它是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。它是采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。遗传算法的操作对象是一群二进制串(称为染色体、个体),即种群,每一个染色体都对应问题的一个解。从初始种群出发,采用基于适应度函数的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。如此模仿生命的进化进行不断演化,直到满足期望的终止条件。 运算流程: Step 1:对遗传算法的运行参数进行赋值。参数包括种群规模、变量个数、交叉概率、变异概率以及遗传运算的终止进化代数。 Step 2:建立区域描述器。根据轨道交通与常规公交运营协调模型的求解变量的约束条件,设置变量的取值范围。 Step 3:在Step 2的变量取值范围内,随机产生初始群体,代入适应度函数计算其适应度值。 Step 4:执行比例选择算子进行选择操作。 Step 5:按交叉概率对交叉算子执行交叉操作。 Step 6:按变异概率执行离散变异操作。 Step 7:计算Step 6得到局部最优解中每个个体的适应值,并执行最优个体保存策略。 Step 8:判断是否满足遗传运算的终止进化代数,不满足则返回Step 4,满足则输出运算结果。 其次,运用遗传算法工具箱。 运用基于Matlab的遗传算法工具箱非常方便,遗传算法工具箱里包括了我们需要的各种函数库。目前,基于Matlab的遗传算法工具箱也很多,比较流行的有英国设菲尔德大学开发的遗传算法工具箱GATBX、GAOT以及Math Works公司推出的GADS。实际上,GADS 就是大家所看到的Matlab中自带的工具箱。我在网上看到有问为什么遗传算法函数不能调用的问题,其实,主要就是因为用的工具箱不同。因为,有些人用的是GATBX带有的函数,但MATLAB自带的遗传算法工具箱是GADS,GADS当然没有GATBX里的函数,因此运行程序时会报错,当你用MATLAB来编写遗传算法代码时,要根据你所安装的工具箱来编写代码。

几种常见窗函数及其MATLAB程序实现

几种常见窗函数及其MATLAB程序实现 2013-12-16 13:58 2296人阅读评论(0) 收藏举报 分类: Matlab(15) 数字信号处理中通常是取其有限的时间片段进行分析,而不是对无限长的信号进行测量和运算。具体做法是从信号中截取一个时间片段,然后对信号进行傅里叶变换、相关分析等数学处理。信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的。在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应,可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称为窗。 泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,尽可能使窗函数频谱中的主瓣宽度应尽量窄,以获得较陡的过渡带;旁瓣衰减应尽量大,以提高阻带的衰减,但通常都不能同时满足这两个要求。 频谱中的如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的加窗处理,重要的问题是在于根据信号的性质和研究目的来选用窗函数。图1是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低,如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。表1 是几种常用的窗函数的比较。 如果被测信号是随机或者未知的,或者是一般使用者对窗函数不大了解,要求也不是特别高时,可以选择汉宁窗,因为它的泄漏、波动都较小,并且选择性也较高。但在用于校准时选用平顶窗较好,因为它的通带波动非常小,幅度误差也较小。

完整的遗传算法函数Matlab程序

完整的遗传算法函数Matlab程序 function [x,endPop,bPop,traceInfo] = ga(bounds,eevalFN,eevalOps,startPop,opts,... termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps) n=nargin; if n<2 | n==6 | n==10 | n==12 disp('Insufficient arguements') end if n<3 %Default eevalation opts. eevalOps=[]; end if n<5 opts = [1e-6 1 0]; end if isempty(opts) opts = [1e-6 1 0]; end if any(eevalFN<48) %Not using a .m file if opts(2)==1 %Float ga e1str=['x=c1; c1(xZomeLength)=', eevalFN ';']; e2str=['x=c2; c2(xZomeLength)=', eevalFN ';']; else %Binary ga e1str=['x=b2f(endPop(j,:),bounds,bits); endPop(j,xZomeLength)=',... eevalFN ';']; end else %Are using a .m file if opts(2)==1 %Float ga e1str=['[c1 c1(xZomeLength)]=' eevalFN '(c1,[gen eevalOps]);']; e2str=['[c2 c2(xZomeLength)]=' eevalFN '(c2,[gen eevalOps]);']; else %Binary ga e1str=['x=b2f(endPop(j,:),bounds,bits);[x v]=' eevalFN ... '(x,[gen eevalOps]); endPop(j,:)=[f2b(x,bounds,bits) v];']; end end if n<6 %Default termination information termOps=[100];

MATLAB常用工具箱及常用函数

常用工具箱 MATLAB包括拥有数百个内部函数的主包和三十几种工具包。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。 开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。 Matlab Main Toolbox——matlab主工具箱 Control System Toolbox——控制系统工具箱 Communication Toolbox——通讯工具箱 Financial Toolbox——财政金融工具箱 System Identification Toolbox——系统辨识工具箱 Fuzzy Logic Toolbox——模糊逻辑工具箱 Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱 Image Processing Toolbox——图象处理工具箱 computer vision system toolbox----计算机视觉工具箱 LMI Control Toolbox——线性矩阵不等式工具箱 Model predictive Control Toolbox——模型预测控制工具箱 μ-Analysis and Synthesis Toolbox——μ分析工具箱 Neural Network Toolbox——神经网络工具箱

Optimization Toolbox——优化工具箱 Partial Differential Toolbox——偏微分方程工具箱Robust Control Toolbox——鲁棒控制工具箱 Signal Processing Toolbox——信号处理工具箱 Spline Toolbox——样条工具箱 Statistics Toolbox——统计工具箱 Symbolic Math Toolbox——符号数学工具箱 Simulink Toolbox——动态仿真工具箱 Wavele Toolbox——小波工具箱 DSP system toolbox-----DSP处理工具箱 常用函数 Matlab内部常数[2] eps:浮点相对精度 exp:自然对数的底数e i 或j:基本虚数单位 inf 或Inf:无限大,例如1/0 nan或NaN:非数值(Not a number),例如0/0 pi:圆周率p(= 3.1415926...) realmax:系统所能表示的最大数值 realmin:系统所能表示的最小数值 nargin: 函数的输入引数个数

matlab经典代码大全

哈哈哈 MATLAB 显示正炫余炫图:plot(x,y1,'* r',x,y2,'o b') 定义【0,2π】;t=0:pi/10:2*pi; 定义函数文件:function [返回变量列表]=函数名(输入变量列表) 顺序结构:选择结构 1)if-else-end语句 其格式为: if 逻辑表达式 程序模块1; else 程序模块2; End 图片读取:%选择图片路径 [filename, pathname] = ... uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片'); %合成路径+文件名 str=[pathname,filename]; %为什么pathname和filename要前面出现的位置相反才能运行呢???%读取图片 im=imread(str); %使用图片 axes(handles.axes1); %显示图片 imshow(im); 边缘检测: global im str=get(hObject,'string'); axes (handles.axes1); switch str case ' 原图' imshow(im); case 'sobel' BW = edge(rgb2gray(im),'sobel'); imshow(BW); case 'prewitt' BW = edge(rgb2gray(im),'prewitt');

imshow(BW); case 'canny' BW = edge(rgb2gray(im),'canny'); imshow(BW);Canny算子边缘定位精确性和抗噪声能力效果较好,是一个折中方案 end; 开闭运算: se=[1,1,1;1,1,1;1,1,1;1,1,1]; %Structuring Element I=rgb2gray(im); imshow(I,[]);title('Original Image'); I=double(I); [im_height,im_width]=size(I); [se_height,se_width]=size(se); halfheight=floor(se_height/2); halfwidth=floor(se_width/2); [se_origin]=floor((size(se)+1)/2); image_dilation=padarray(I,se_origin,0,'both'); %Image to be used for dilation image_erosion=padarray(I,se_origin,256,'both'); %Image to be used for erosion %%%%%%%%%%%%%%%%%% %%% Dilation %%% %%%%%%%%%%%%%%%%%% for k=se_origin(1)+1:im_height+se_origin(1) for kk=se_origin(2)+1:im_width+se_origin(2) dilated_image(k-se_origin(1),kk-se_origin(2))=max(max(se+image_dilation(k-se_origin(1):k+halfh eight-1,kk-se_origin(2):kk+halfwidth-1))); end end figure;imshow(dilated_image,[]);title('Image after Dilation'); %%%%%%%%%%%%%%%%% %%% Erosion %%% %%%%%%%%%%%%%%%%% se=se'; for k=se_origin(2)+1:im_height+se_origin(2) for kk=se_origin(1)+1:im_width+se_origin(1) eroded_image(k-se_origin(2),kk-se_origin(1))=min(min(image_erosion(k-se_origin(2):k+halfwidth -1,kk-se_origin(1):kk+halfheight-1)-se)); end end figure;imshow(eroded_image,[]);title('Image after Erosion'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Opening(Erosion first, then Dilation) %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

matlab工具箱函数

matlab工具箱函数汇总 2008年11月10日星期一下午 05:19 表Ⅰ-4 随机数生成器函数 函数对应分布的随机数生成器 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器 nctrnd 非中心t分布的随机数生成器 ncx2rnd 非中心卡方分布的随机数生成器 normrnd 正态(高斯)分布的随机数生成器 poissrnd 泊松分布的随机数生成器 raylrnd 瑞利分布的随机数生成器 trnd 学生氏t分布的随机数生成器 unidrnd 离散均匀分布的随机数生成器 unifrnd 连续均匀分布的随机数生成器 weibrnd 威布尔分布的随机数生成器 -------------------------------------------------------------------------------- 表Ⅰ-5 分布函数的统计量函数 函数名对应分布的统计量 betastat 贝塔分布函数的统计量 binostat 二项分布函数的统计量 chi2stat 卡方分布函数的统计量 expstat 指数分布函数的统计量 fstat f分布函数的统计量 gamstat 伽玛分布函数的统计量 geostat 几何分布函数的统计量 hygestat 超几何分布函数的统计量 lognstat 对数正态分布函数的统计量 nbinstat 负二项分布函数的统计量 ncfstat 非中心f分布函数的统计量 nctstat 非中心t分布函数的统计量

常用的MATLAB程序和函数

==等于 <小于 >大于 <=小于或等于>=大于或等于~=不等于 4 常用内部数学函数 指数函数exp(x)以e为底数 对数函数log(x)自然对数,即以e为底数的对数log10(x)常用对数,即以10为底数的对数log2(x)以2为底数的x的对数 开方函数sqrt(x)表示x的算术平方根

绝对值函数abs(x)表示实数的绝对值以及复数的模 三角函数(自变量的单位为弧度)sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数csc(x)余割函数 反三角函数asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函数 双曲函数sinh(x)双曲正弦函数cosh(x)双曲余弦函数tanh(x)双曲正切函数coth(x)双曲余切函数sech(x)双曲正割函数csch(x)双曲余割函数 反双曲函数asinh(x)反双曲正弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数acsch(x)反双曲余割函数 求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为( , ] 数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数

排列组合函数factorial(n)阶乘函数,表示n的阶乘 复数函数real(z)实部函数 imag(z)虚部函数 abs(z)求复数z的模 angle(z) 求复数z的辐角,其范围是( , ] conj(z)求复数z的共轭复数 求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数 最大、最小函数max([a,b,c,...]) 求最大数min([a,b, c,..]) 求最小数 符号函数 sign(x)

MATLAB小波分析工具箱常用函数

matlab小波分析工具箱常用函数 1.Cwt :一维连续小波变换 格式:coefs=cwt(s,scales,'wavename') coefs=cwt(s,scales,'wavename','plot') scales:尺度向量,可以为离散值,表示为[a1,a2,a3……],也可为连续值,表示为[amin:step:amax] 2.dwt:单尺度一维离散小波变换 格式:[ca,cd]=dwt(x,'wavename') [ca,cd]=dwt(x,lo-d,hi-d) 先利用小波滤波器指令wfilters求取分解用低通滤波器lo-d和高通滤波器hi-d。 [lo-d,hi-d]=wfilters('haar','d');[ca,cd]=dwt(s,lo-d,hi-d) 3.idwt:单尺度一维离散小波逆变换 4.wfilters 格式:[lo-d,hi-d,lo-r,hi-r]=wfilters('wname') [f1,f2]=wfilters('wname','type') type=d(分解滤波器)、R(重构滤波器)、l(低通滤波器)、h(高通滤波器) 5.dwtmode 离散小波变换模式 格式:dwtmode dwtmode('mode') mode:zdp补零模式,sym对称延拓模式,spd平滑模式 6.wavedec多尺度一维小波分解 格式:[c,l]=wavedec(x,n,'wname') [c,l]=wavedec(x,n,lo-d,hi-d) 7.appcoef 提取一维小波变换低频系数 格式:A=appcoef(c,l,'wavename',N) A=appcoef(c,l,lo-d,hi-d,N) N是尺度,可省略 例: load leleccum; s=leleccum(1:2000) subplot(421) plot(s); title('原始信号') [c,l]=wavedec(s,3,'db1'); ca1=appcoef(c,l,'db1',1); subplot(445) plot(ca1); ylabel('ca1'); ca2=appcoef(c,l,'db1',2); subplot(4,8,17) plot(ca2); ylabel('ca2'); 8.detcoef 提取一维小波变换高频系数 格式:d=detcoef(c,l,N),N尺度的高频系数

Matlab程序调试相关函数.

kyboard: KEYBOARD Invoke keyboard from M-file. KEYBOARD, when placed in an M-file, stops execution of the file and gives control to the user's keyboard. The special status is indicated by a K appearing before the prompt. Variables may be examined or changed - all MATLAB commands are valid. The keyboard mode is terminated by executing the command RETURN (i.e. typing the six letters R-E-T-U-R-N and pressing the return key. Control returns to the invoking M-file. DBQUIT can also be used to get out of keyboard mode but in this case the invoking M-file is terminated. The keyboard mode is useful for debugging your M-files. See also dbquit, dbstop, return, input. Reference page in Help browser doc keyboard dbquit: Quit debug mode. The DBQUIT command immediately terminates debug mode and returns control to the base workspace prompt. The M-file being processed is NOT completed and no results are returned.

MATLABANN工具箱实用指南

Matlab的神经网络工具箱实用指南 文章摘要:第一章是神经网络的基本介绍,第二章包括了由工具箱指定的有关网络结构和符号的基本材料以及建立神经网络的一些基本函数,例如new、init、adapt和train。第三章以反向传播网络为例讲解了反向传播网络的原理和应用的基本过程。 第一章介绍 1.神经网络 神经网络是单个并行处理元素的集合,我们从生物学神经系统得到启发。在自然界,网络功能主要由神经节决定,我们可以通过改变连接点的权重来训练神经网络完成特定的功能。 一般的神经网络都是可调节的,或者说可训练的,这样一个特定的输入便可得到要求的输出。如下图所示。这里,网络根据输出和目标的比较而调整,直到网络输出和目标匹配。作为典型,许多输入/目标对应的方法已被用在有监督模式中来训练神经网络。 神经网络已经在各个领域中应用,以实现各种复杂的功能。这些领域包括:模式识别、鉴定、分类、语音、翻译和控制系统。 如今神经网络能够用来解决常规计算机和人难以解决的问题。我们主要通过这个工具箱来建立示范的神经网络系统,并应用到工程、金融和其他实际项目中去。 一般普遍使用有监督训练方法,但是也能够通过无监督的训练方法或者直接设计得到其他的神经网络。无监督网络可以被应用在数据组的辨别上。一些线形网络和Hopfield网络是直接设计的。总的来说,有各种各样的设计和学习方法来增强用户的选择。 神经网络领域已经有50年的历史了,但是实际的应用却是在最近15年里,如今神经网络仍快速发展着。因此,它显然不同与控制系统和最优化系统领域,它们的术语、数学理论和设计过程都已牢固的建立和应用了好多年。我们没有把神经网络工具箱仅看作一个能正常运行的建好的处理轮廓。我们宁愿希望它能成为一个有用的工业、教育和研究工具,一个能够帮助用户找到什么能够做什么不能做的工具,一个能够帮助发展和拓宽神经网络领域的工具。因为这个领域和它的材料是如此新,这个工具箱将给我们解释处理过程,讲述怎样运用它们,并且举例说明它们的成功和失败。我们相信要成功和满意的使用这个工具箱,对范例

Matlab编写与调用函数

MATLAB 学习指南 第六章.编写与调用函数 在这一章中,我们讨论如何用多源代码文件来构造一个程序。首先,解释代码文件在MATLAB中如何工作。在编译语言中,例如FORTRAN,C ,或C++,代码被存储在一个或多个源文件中,在进行编译的时候,这些源文件组合在一起 形成了一个单独的可执行文件。作为一种解释型语言,MATLAB以一种更广泛的方式来处理多个源文件。MATLAB代码被放入带有扩展名.m的ASCII文件(或称m-文件)中。MATLAB 6 有一个集成字处理与调试应用程序,尽管会用到其它编辑程序如vi或emacs,集成字处理与调试应用程序仍是编译m-文件的首选程序。 有两种不同的m-文件。一种是脚本文件,它是一种最简单的文件,仅仅将MATLAB中的指令收集在一起。当在交互提示符处输入文件名执行脚本文件时,MATLAB在m-文件内读取并执行指令,就好像指令是我们输入的。而且,似乎我们能够削减m-文件的内容并将削减过的内容传到MATLAB指令窗口中。这种m-文件的用法将在6.1节中给予概述。 在6.2节中要讨论的第二种m-文件包含一个单一函数,此函数名与此m-文件名相同。这种m-文件包含一段独立的代码,这段代码具有一个明确规定的输入/输出界面;那就是说,传给这段代码一列空变量arg1,arg2,…,这段独立代码就能够被调用,然后返回输出值out1,out2,…。一个函数m-文件的第一个非注释行包含函数标头,其形式如下: 此m-文件以返回指令结束,将执行程序返回到函数被调用的位置。或者在交互指令提示符处或者在另一个m-文件内,无论何时用下列指令调用函数代码,函数代码都将被执行。 输入映射到空变量:arg1=var1,arg2=var2,等等。在函数主体内,输出值被分配给了变量out1,out2,等等。当遇到返回值时,当前值out1,out2,…在函数被调用处被映射到变量outvar1,outvar2,…。在用可变长度自变量和输出变量列表编写函数时,MATLAB允许更多的自由。例如,也可以使用下列指令来调用函数。 在此情况下,仅返回一个单一输出变量,这个变量在出口处包含函数变量out1的值。输入和输出自变量可能是字符串,数值,向量,矩阵,或者更高级的数据结构。 为什么使用函数呢?因为从每门计算机科学课程中可知,把一个大的程序分割 成多个可以单独执行一个被明确规定的和被注释过的任务的小程序会使大程序 易读,易于修改,不易于出错。在MATLAB中,先为程序编写一个主文件,或者是一个脚本文件或者更好的话,是一个能够返回一个单一整数的函数m-文件(返回1表示程序执行成功,0表示不完全程序执行,负值表示出现运行误差),这个主文件是程序的进入点。通过把m-文件当作函数来调用,此程序文件可以

MATLAB神经网络工具箱函数

MATLAB 神经网络工具箱函数 说明:本文档中所列出的函数适用于MATLAB5.3 以上版本,为了简明起见,只列出了函数名, 若需要进一步的说明,请参阅MATLAB 的帮助文档。 1. 网络创建函数 newp 创建感知器网络 newlind 设计一线性层 newlin 创建一线性层 newff 创建一前馈BP 网络 newcf 创建一多层前馈BP 网络 newfftd 创建一前馈输入延迟BP 网络 newrb 设计一径向基网络 newrbe 设计一严格的径向基网络 newgrnn 设计一广义回归神经网络 newpnn 设计一概率神经网络 newc 创建一竞争层 newsom 创建一自组织特征映射 newhop 创建一Hopfield 递归网络 newelm 创建一Elman 递归网络 2. 网络应用函数 sim 仿真一个神经网络 init 初始化一个神经网络 adapt 神经网络的自适应化 train 训练一个神经网络 3. 权函数 dotprod 权函数的点积 ddotprod 权函数点积的导数 dist Euclidean 距离权函数 normprod 规范点积权函数 negdist Negative 距离权函数 mandist Manhattan 距离权函数 linkdist Link 距离权函数 4. 网络输入函数 netsum 网络输入函数的求和 dnetsum 网络输入函数求和的导数 5. 传递函数 hardlim 硬限幅传递函数 hardlims 对称硬限幅传递函数 purelin 线性传递函数 tansig 正切S 型传递函数 logsig 对数S 型传递函数 dpurelin 线性传递函数的导数 dtansig 正切S 型传递函数的导数dlogsig 对数S 型传递函数的导数

罚函数法MATLAB程序

一、进退法、0.618法、Powell法、罚函数法的Matlab程序设计 罚函数法(通用) function y=ff(x,k) y=-17.86*0.42*x(1)/(0.8+0.42*x(1))*(1-exp(-2*(0.8+0.42*x(1))/3))*exp(-1.6)*x(2)-22. 99*x(1)/(0.8+x(1))*(1-exp(-2*(0.8+x(1))/3))*x(3)+k*(x(2)-(1.22*10^2*(9517.8*exp(-1 .6-2*0.42*x(1)/3)*x(2)+19035.6*exp(-2*x(1)/3)*x(3)))/(1.22*10^2+9517.8*exp(-1.6-2 *0.42*x(1)/3)*x(2)+19035.6*exp(-2*x(1)/3)*x(3)))^2+k*(x(3)-exp(-0.8-2*x(1)/3)*x(3) -exp(-2.4-2*0.42*x(1)/3)*x(2))^2; % 主函数,参数包括未知数的个数n,惩罚因子q,惩罚因子增长系数k,初值x0,以及允许的误差r function G=FHS(x0,q,k,n,r,h,a) l=1; while (l) x=powell(x0,n,q,r(1),h,a); %调用powell函数 g(1)=ff1(x),g(2)=ff2(x) . . . g(p)=ffp(x); %调用不等式约束函数,将其值%存入数组g h(1)=hh1(x),h(2)=hh2(x) . . . h(t)=hht(x); %调用等式约束函数,将其值 %存入数组h for i=1:p if g(i)

matlab代码--函数逼近

函数逼近 1.Chebyshev用切比雪夫多项式逼近已知函数 function f=Chebyshev(y,k,x0) syms t; T(1:k+1)=t; T(1)=1; T(2)=t; c(1:k+1)=0.0; c(1)=int(subs(y,findsym(sym(y)),sym('t'))*T(1)/sqrt(1-t^2),t,-1,1)/pi; c(2)=2*int(subs(y,findsym(sym(y)),sym('t'))*T(2)/sqrt(1-t^2),t,-1,1)/pi; f=c(1)+c(2)*t; for i=3:k+1 T(i)=2*t*T(i-1)-T(i-2); c(i)=2*int(subs(y,findsym(sym(y)),sym('t'))*T(i)/sqrt(1-t^2),t,-1,1)/2; f=f+c(i)*T(i); f=vpa(f,6); if(i==k+1) if(nargin==3) f=subs(f,'t',x0); else f=vpa(f,6); end end end 2.Legendre用勒让德多项式逼近已知函数 function f=Legendre(y,k,x0) syms t; P(1:k+1)=t; P(1)=1; P(2)=t; c(1:k+1)=0.0; c(1)=int(subs(y,findsym(sym(y)),sym('t'))*P(1),t,-1,1)/2; c(2)=int(subs(y,findsym(sym(y)),sym('t'))*P(2),t,-1,1)/2; f=c(1)+c(2)*t; for i=3:k+1 P(i)=((2*i-3)*P(i-1)*t-(i-2)*P(i-2))/(i-1); c(i)=int(subs(y,findsym(sym(y)),t)*P(i),t,-1,1)/2; f=f+c(i)*P(i);

Matlab 实例教程:PDE工具箱函数用法讲解

Matlab 实例教程:PDE工具箱函数用法讲解 Matlab工具箱中任何功能都能用命令行的形式解决,对于一些复杂的问题,gui形式是解决不了的,这时就必须用命令行形式自己编程来解决问题。最近查看了一些pde工具箱中的函数,对两个函数的用法做一些说明。 PDE解决问题流程与一般的fam方法一样,先画出几何模型,再画网格,加边界、载荷,求解。MATLAB中的画几何命令有两种方式,其中一种方式是自己编写m文件,MATLAB中的命令是pdegeom,实际上这不是一个命令,而是要用户自己编写的一个几何m文件。在网上找了半天,也没见有人介绍过这个函数的用法,网上大多数只是列出pde中的函数而已,感叹一下….这个函数名可以任意,假设为tt,参数有两个(bs,s)如果输入参数为0,1时,函数也必须要能有返回值。函数的意义为: 参数为0个,即没有参数时,返回边界总共段数。 参数为1个是,即只有bs,返回边界指定段的参变量范围。 参数为2个时,返回每段边界长度为s时的坐标。 函数参数意义bs表示几何边界段数,如矩形,边界为四段,三角开边界肯定为三段….s为第bs段时的长度,bs与s可以为向量,但是要一一对应,即bs为几个值,s也得为几个值。 下面具体来讲下函数如何实现当参数为2时的返回值。其实函数中实现的内容是指用一个参变量来控制指定段的边界坐标,也就是说对任意一段边界,上面的坐标设为参变量的函数,假设参变

量为t,则对任一边界,坐标为(x(t),y(t)),参变量的范围由用户自己定义。由以上可以看出,参变量其实有无穷多种取法,看自己怎么设定而已。 例如:一个矩形,四条边,返回每一段对应长度的坐标,m文件为: function [x,y]=tt(bs,s); ux=1; uy=1; nbs=4; //表示有四段 if nargin==0 x=nbs; return end dl=[0,0,0,0; //参变量t范围,第一行为起始值,第二行为结束值,这两个值理论 3,1,2,3; //可以任意设置,只要后面能对应求出边界上坐标(x(t),y(t))就行 1,1,1,1; //第三行指面积在边界左侧 0,0,0,0,]; //第四行指面积在边界右侧 if nargin==1 x=dl(:,bs); return;

相关主题
文本预览
相关文档 最新文档