matlab的函数类型

  • 格式:doc
  • 大小:446.00 KB
  • 文档页数:22

matlab的函数类型 作者:XLFinance 来源: XLFinance 打印 邮寄 返回

匿名函数 匿名函数的作用在于可以快速生成简单的函数,而不需创建m文件,匿名函数通常在命令区或函数、脚本中运行时创建。匿名函数的生成语法是 fhandle = @(arglist) expr,其中expr代表函数体,arglist是逗号分隔的参数列表。符号@代表创建函数句柄,匿名函数必须使用此符号,匿名函数的执行语法是:fhandle(arg1, arg2, ..., argN),fhandle为匿名函数句柄名称。

简单的匿名函数示例:sqr = @(x) x.^2,该匿名函数计算给定参数x的平方值,执行可以使用 a = sqr(5)形式。再如:sumAxBy = @(x, y) (A*x + B*y)(使用多个参数),t = @() datestr(now)(无参数),A = {@(x)x.^2, @(y)y+10, @(x,y)x.^2+y+10}(匿名函数数组)。

多重匿名函数

等同于:g = @(c) (quad(@(x) (x.^2 + c*x + 1), 0, 1)); 其中@(x) (x.^2 + c*x + 1)为第一重匿名函数,而后作为参数继续传递给积分函数。 再如求解函数 a*exp(x)+b*x=0,则使用在m函数文件调用匿名函数: function f0 = test(a, b, x0) f0=fsolve(@(x)(a*exp(x)+b*x),x0);

主函数 任意m文件中的第一个函数称呼为主函数,主函数之后可能附随多个子函数。主函数是在命令区或其它函数中可调用的唯一一个该m文件中所定义的函数。

子函数 一个m文件中可能包含多个函数。主函数之外的函数都称为子函数,这些子函数只能为主函数或同一m文件中的其它子函数可见。例如:

function [avg, med] = newstats(u) % 主函数 n = length(u); avg = mean(u, n); med = median(u, n); function a = mean(v, n) % 子函数1 a = sum(v)/n;

function m = median(v, n) % 子函数2 w = sort(v); if rem(n, 2) == 1 m = w((n+1) / 2); else m = (w(n/2) + w(n/2+1)) / 2; end

而即便在相同m文件中,子函数内定义的变量也不可为其它子函数所使用,除非定义为全局或作为参数传递。 私有函数 私有函数仅对满足条件的特定函数开放。私有函数存放于名为private的子目录下,访问条件是: 存放于该private子目录的上一层父目录中的m文件函数 从存放于该private子目录上一层父目录中的m文件函数中发起调用的m脚本

嵌套函数 任一m函数体内所定义的函数称为外部函数的嵌套函数,matlab支持多重嵌套函数,即在嵌套函数内部继续定义下一层的嵌套函数,形如:

function x = A(p1, p2) function y = B(p3) ... end ... End

Matlab函数体通常不需end结束标记,但如包含嵌套函数,则该m文件内的所有函数(主函数和子函数),不论是否包含嵌套函数都需显式end标记。

嵌套函数的调用规则:1)父级函数可调用下一层嵌套函数;2)相同父级的同级嵌套函数可相互调用;3)处于低层的嵌套函数可调用任意父级函数。

嵌套函数中的局部变量在其任一层内部嵌套函数或外部父级函数中都可访问,例如下面的两个函数都是合法的: 而下例函数中的参数调用是不合法的,由于变量x分别处于两个独立的工作区: 嵌套函数的输出变量不为外部函数可见。 matlab中的数据导入和导出 作者:XLFinance 来源: XLFinance 打印 邮寄 返回

Matlab提供了从磁盘文件或剪贴簿转载数据至工作区(数据导入)和将工作区变量存 入磁盘文件(数据导出)的多种途径。 最简单的办法是使用界面导入向导,打开文件菜单中的导入数据而后按提示操作。Matlab支持的主要数据文件类型和对应函数如下: 导入文本文件 文本文件需要具备统一的行列模式,使用分隔符作为数据项间隔,这些分隔符包括空格、逗号、tab、分号或其它。数据文件可能附带标题行和行列头标签。

数值数据 对于数值数据可以直接使用load函数装载,例如my_data.txt中数据如下: 1 2 3 4 5 6 7 8 9 10

命令A = load('my_data.txt')装载该文本文件数据。 如果数值数据使用其它分隔符,可以使用dlmread读入,假设my_data.txt中数据如下: 7.2;8.5;6.2;6.6 5.4;9.2;8.1;7.2

命令A = dlmread('my_data.txt', ';')读入该数据。 包含行列标签的数值数据 例如: Grade1 Grade2 Grade3 78.8 55.9 45.9 99.5 66.8 78.0 89.5 77.0 56.7

fid = fopen('grades.dat', 'r'); grades = textscan(fid, '%f %f %f', 3, 'headerlines', 1); fclose(fid);

包含字符和数值的混合数据 使用textread函数读入。 导出文本文件 save函数 A = [ 1 2 3 4 ; 5 6 7 8 ]; save my_data.out A –ASCII dlmwrite函数 dlmwrite('my_data.out',A, ';') MS-Excel电子表格文件 xlsinfo获得文件信息 使用命令[type, sheets] = xlsfinfo(filename)返回文件类型type和工作表信息。如:[type, sheets] = xlsfinfo('tempdata.xls') Xlswrite导出数据

d = {'Time', 'Temp'; 12 98; 13 99; 14 97} 命令xlswrite('tempdata.xls', d, 'Temperatures', 'E1')将单元格数组d的数据写出至tempdata.xls文件,新建工作表'Temperatures',从该工作表的E1单元格开始写入。

Xlsread读入数据 ndata = xlsread('tempdata.xls', 'Temperatures') [ndata, headertext] = xlsread('tempdata.xls', 'Temperatures')

matlab图形用户界面简介 作者:XLFinance 来源: XLFinance 打印 邮寄 返回

通过GUIDE创建图形用户界面 GUIDE是Matlab提供的图形用户界面开发环境,提供了一系列用于创建图形用户界面的工具,从而简化界面布局和编程工作。GUIDE的空白界面如下: GUIDE提供众多个人偏好和选项设定,从文件菜单中的偏好可进入设定窗口:

GUIDE中的界面设计直接通过拖拉和拖放操作完成,如界面尺寸、控件等。所有控件有对应的属性,通过右键菜单中的“Property Inspector”可进入属性操作,所有控件有唯一的tag,tag在事件代码中作为具体控件的标识。GUIDE提供了控件排列、tab设置、菜单栏设计等功能,在r2006a版本中,GUIDE不提供工具条设计功能,但是可以通过程序创建工具栏。 通过GUIDE设计界面并编写对应的程序代码后保存生成.fig(界面)和.m(代码)文件。 GUI编程:GUI 回调(Callback) 回调代码和具体的GUI控件或图表相关,用于控制GUI行为,如对点击、菜单选择、拖放等事件的响应,也即所谓事件驱动编程。不同的GUI控件可能会有不同的回调类型,定义为控件属性。

GUI文件 GUI文件包括.fig和.m文件,二者存放于相同目录下。主函数的名称和m文件的名称相同,主函数之外的每个回调都是子函数。GUIDE在生成m文件时,自动包括每个控件常用的回调代码模板,初始化代码,opening函数,输出函数等。

在回调和控件之间建立关联 GUI通常包含多个控件,GUIDE使用控件的回调属性和该控件的回调关联。GUIDE将每个控件最常用的回调属性的值设定为自动即%automatic,在保存文件之后,该值将被替换为调用序列的Matlab表达式,包括控件的tag属性和回调属性的名称,例如:

其中,simple_gui是GUI m文件的名称,也是其主函数的名称。其余参数产生pushbutton1_Callback的输入参数,gcbo返回回调对象句柄(即pushbutton1),guidata(gcbo)返回该GUI的句柄结构。

回调语法 GUIDE生成回调语法和参数的模板如下: % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) %#ok % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) ...

其中,第一个注释行描述触发此回调过程执行的时间,而后是函数定义行和输入参数描述。在最后注释行之后可以开始添加代码。 回调函数的命名是自动生成的如 pushbutton1_Callback,变更名称可以通过改变控件的tag属性或callback属性实现。