matlab meshc函数_matlab基础教程一

一、变量

1.1 变量类型

1.1.1 局部变量

MATLAB中每个函数都有自己的局部变量;局部变量存储在该函数独立的工作区中,与其他函数的变量及主工作区中的变量分开存储。当函数调用结束后,局部变量将随之删除。

1.1.2 全局变量

全局变量在MATLAB全部工作区中有效。声明格式如下:

global x_Val

1.1.3 永久变量

永久变量可以用persistent声明,只能在M文件函数中定义和使用;改变了只允许声明它的函数存取和操作。当声明它的函数退出时,永久变量继续保存在内存中。声明格式如下:

persistent a

1.2 关键字

关键字是MATLAB中常用到的流程控制变量,共有20个,通过iskeyword命令即可查询这20个关键字。

keywords = reshape(iskeyword,[5 4])keywords =    'break'       'else'        'global'        'return'    'case'        'elseif'      'if'            'spmd'      'catch'       'end'         'otherwise'     'switch'    'classdef'    'for'         'parfor'        'try'       'continue'    'function'    'persistent'    'while'

二、程序控制

2.1 分支结构

MATLAB中可用的分支结构有三种,分别为if-else-end结构、switch-case结构和try-catch结构。

2.1.1 if-else-end分支结构 形式1

t = 1:5if 1    t1 = 6-tend

2.1.2 if-else-end分支结构 形式2

t = 1:5if 0    t1 = 6-telse 1    t1 = t - 2end

2.1.3 if-else-end分支结构 形式3

t = 1:5if 0    t1 = 6-telseif 0    t1 = t - 2else    t1 = tend

2.1.4 switch-case 结构

说明:

•switch-case结构至少有一组命令组将被执行•switch后的表达式value为一个变量或字符串,为变量时,比较形式为:表达式==检测值i;当表达式为字符串时,MATLAB将调用strcmp来进行比较•case后的检测值可以是标量值,字符串,元胞数组。若检测值是一个元胞数组,则MATLAB将会把表达式的值与元胞数组中的所有元素进行比较;若元胞数组中有某个元素与表达式的值相等,则为真

num = 3;switch num    case 1        data = '差'    case 2        data = '次'    case 3        data = '中'    case 4        data = '良'    case 5        data = '优'    otherwise        data = '请确认输入'end

2.1.5 try-catch 结构

说明:

•try-catch结构只提供两个可供选择的命令组•当执行中发生错误时,可调用lasterr函数查询出错的原因。若函数lasterr的运行结构为空字符串,则表示命令组commands1被成功执行•若catch结构中发生错误,则matlab会终止该结构

n = 16;mat = magic(3)  % 生成3阶魔法矩阵try    mat_num = mat(n)    % 取mat的第n个元素catch    mat_end = mat(end)  % 若mat没有第n个元素,则取mat的最后一个元素    reason = lasterr    % 显示出错原因end% 程序输出mat_end =     2reason =索引超出矩阵维度。

2.2 循环结构

2.2.1 for循环结构

for循环重复执行一组语句的一个预先给定的次数。

for i = 1:4    for j = 1:4        if i >=j            mat(i,j)=i^2;   % 分号抑制输出        else            mat(i,j)=j^2;   % 分号抑制输出        end    endendmat

结果如下:

mat =     1     4     9    16     4     4     9    16     9     9     9    16    16    16    16    16

求解1+3+···+1001的和

sum = 0;for i = 1:2:1001    sum = sum + i;endsum

结果如下:

sum =      251001

2.2.2 while循环结构

sum = 0;i = 0;while i <= 100    sum = sum + i;    i = i + 2;endsum

结果如下:

sum =        2550

2.3 其他常用控制命令

2.3.1 input和keyboard命令

用户可以使用input命令通过键盘输入数值、字符串或表达式等。调用格式如下:

>> val = input('输入:')输入:2val =     2val = input('输入:','s')   % 将用户输入以字符串的形式赋值给变量val

请求键盘输入命令keyboard如被放置在M文件中,将停止文件的继续执行,并将控制权交给键盘。提示符前会显示K来表征这种特殊状态。在M文件中使用该命令,对程序的调试及在程序运行中修改变量都很方便。在Matlab 2016中,可以输入命令dbcont命令退出该模式。


三、函数

3.1 M文件函数

M文件函数是可以定义输入参数或返回输出变量的M文件。M文件的名称和函数的名称必须一致。

控制命令说明
nargin表示调用函数所带参数个数的变量
nargout表示调用函数所返回参数个数的变量
inputname(x)返回输入表上数字x所在位置的输入参数变量的名字,若为表达式则返回一个空字符串
nargchk功能为控制函数的输入参数的个数
varargin表示函数可带有任意多个输入参数
varargout表示函数可带有任意多个输出参数

以add_test.m为例,以下为文件内容:

function result = add_test(x,y)result = x + y;end

调用示例:

>> val = add_test(7,8)val =    15

说明:

•函数定义名应和文件保存名一致,当两者不一致时,matlab以文件名为准•函数文件名必须以字母开头,可以是字母、下划线和数组的任意组合

3.2 匿名函数

匿名函数没有函数名,也不是函数m文件,只有表达式和输入、输出参数。可以在命令行中输入代码,创建匿名函数。创建方法为:

f = @(input1,input2,...) expression

其中,f为创建的函数句柄;input1、input2为输入变量;expression为函数的主体表达式。若匿名函数没有输入参数,则在调用函数时,需要用空格来替换input,否则无法执行程序。

匿名函数示例:

>> sqr = @(x) x.^2; %创建匿名函数句柄>> t = sqr([2.5 3])t =    6.2500    9.0000

3.3 子函数

子函数也称为局部函数,是指在matlab中,多个函数的代码可以写到一个M函数文件中时出现的一种函数。

M函数文件出现的第一个函数称为主函数,其他函数称为子函数。保存时所用的函数文件名应当与主函数名相同,而且外部程序只能调用主函数。

说明:

•每个子函数的第一行是其函数声明行•主函数的位置不能改变,多个子函数的顺序可以改变•子函数只能被处于同一M文件中的主函数或其他子函数调用•在M函数文件中,任何命令通过名称对函数进行调用时,子函数优先级仅次于matlab内置函数•同一M文件的主函数、子函数的工作区都是彼此独立的。各个函数间的信息传递,可以通过输入输出变量、全局变量或跨空间命令来实现

子函数示例:创建sub_function.m文件

function [avg, med] = sub_function(x)n = length(x);avg = mymean(x,n);med = mymedian(x,n);endfunction  a = mymean(v,n)% 求平均子函数a = sum(v)/n;endfunction m = mymedian(v,n)% 求中位数子程序w = sort(v);if rem(n,2) == 1    m = w((n+1)/2);else    m = (w(n/2) + w(n/2 +1)) /2;endend

在命令行窗口输入:

>> x = [1 3 5 9 11];>> [mean,median] = sub_function(x)mean = 5.8000median = 5

3.4 私有函数

私有函数是指位于私有目录private上的M函数文件,它的主要性质如下:

•私有函数的构造与普通M函数完全相同•私有函数只能被private直接父目录内的M文件所调用•M文件中任何命令调用函数时,私有函数优先级仅次于matlab内置函数和子函数

3.5 内联函数

内联函数的属性与编写方式和普通函数文件不同。其调用形式如下:

inline(expr)inline(expr,arg1,arg2,...)inline(expr,n)

inline命令的功能为字符串表达式expr转化为输入变量自动生成的内联函数;arg1,arg2,...为指定的输入变量,n为指定输入变量个数。

命令功能
class(inline_fun)提供内联函数的类型
char(inline_fun)提供内联函数的计算方式
argnames(inline_fun)提供内联函数的输入变量
vectorize(inline_fun)使内联函数适用于数组运算的规则

内联函数示例,在命令行窗口输入:

>> f = inline('3 *x.^2'),ans1 = argnames(f),ans2 = formula(f),ans3 = char(f),ans4 = class(f),ns5 = f([1 2 3 4 5])f = 内联函数:    f(x) = 3 *x.^2ans1 = 'x'ans2 = 3 *x.^2ans3 = 3 *x.^2ans4 = inlinens5 = 3    12    27    48    75

3.6 eval、feval函数

eval、feval函数可用于将文本与函数联系起来。

3.6.1 eval函数

eval函数用于翻译并执行文本字符串并返回结果,调用形式如下:

eval(expression)[output1, ..., outputN] = eval(expression)

eval函数示例,在命令行窗口输入:

>> x = 3, str='magic(x)', magic3 = eval(str)x = 3str = magic(x)magic3 =     8     1     6     3     5     7     4     9     2

3.6.2 feval函数

feval函数可以将函数句柄文本与函数连接,提供函数计算输入并返回求解结果。其调用形式如下:

[y1,y2,y3] = feval(fhandle,x1,...,xn)[y1,y2,y3] = feval(fname,x1,...,xn)

feval函数示例,在命令行窗口输入:

>> x = 3, str = @magic , magic3 = feval(str,3)x = 3str = @magicmagic3 =     8     1     6     3     5     7     4     9     2

3.7 函数的函数

函数的函数是指以函数名为自变量的函数。这类函数的用户包括:求零点、最优化、求积分和常微分方程等。示例,在命令行窗口输入:

>> f = @(x,c) x(1).^2 + c.*x(2).^2; % 匿名函数>> c = 1.5;>> X = fminsearch(@(x) f(x,c), [0.3;1]) % 使用函数的函数求最小值X =   1.0e-04 *   -0.2447    0.3159

3.8 内嵌函数

内嵌函数是指完全包含在父函数中的函数。任何函数都可以包含内嵌函数。示例文件:

% embedding_fun.mfunction embedding_fundisp('这是父函数')nestedfxfunction nestedfxdisp('这是内嵌函数')endend

在命令行中测试:

>> embedding_fun这是父函数这是内嵌函数

3330128c3bda09b0102b70bfd8133f1d.png

301c247c7033daefc1dbd43a5bcc7179.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值