当前位置:文档之家› matlab 匿名函数 函数句柄

matlab 匿名函数 函数句柄

matlab 匿名函数  函数句柄
matlab 匿名函数  函数句柄

matlab 匿名函数函数句柄

(2012-05-11 11:35:05)

转载▼

分类:study与matlab

标签:

教育

一、函数句柄

所谓函数句柄,个人认为可以将其理解成一个函数的代号,就像一个人的名字。这样在调用时可以调用函数句柄而不用调用该函数。

语法如下:

变量名= @ 函数名;

@的作用就是将一个函数的函数句柄赋值给等号左边的变量。在调用函数时就可以调用该句柄,可以实现同样的功能。

例:

首先我们写一个求均值的函数:

function y=average(x)

y=mymean(x);

function a=mymean(v)

a=sum(v)/length(v);

定义一个数组z:

z=[1,2,3,4,5,6,7];

>> average(z)

ans =

4

>> handle=@average

handle =

@average

>> ave=@average

ave =

@average

>> ave(z)

ans =

4

二、匿名函数相当于C语言中的函数指针(入口地址),只不过句柄就用一个唯一的常整数来指出

匿名函数是函数句柄的一种特殊用法,这里所得到的函数句柄变量不指向特定的函数(即不指向函数M文件中的函数名),而是指向一个函数表达式(具体表达式)。

语法如下:

变量名=@(输入参数列表)运算表达式;

例子:

为了说明问题,我们用简单的两个数相加,

>> sum=@(x,y)x+y

sum =

@(x,y)x+y

>> sum(2,3)

ans =

5

%%%%%%%%%%%%%%%%%%%

比如定义f(x)=x^2,可以写为

f=@(x)(x.^2)

其中@(x)(x.^2)就是匿名函数,第一个括号里面是自变量,第二个括号里面是表达式,@是函数指针

f=@(x)(x.^2)表示将匿名函数@(x)(x.^2)赋值给f,于是f就表示该函数。

于是f(2)=2.^2=4;f(1:3)=[1:3].^2=[1 4 9]等等

定义匿名函数时也可以调用别的匿名函数,比如

f1=@(x,y)(x.^2+y.^2)

定义了函数x^2+y^2

f2=@(t)(f1(t,2))

定义了函数t^2+4

f3=@(x)(f1(x(1),x(2)))

定义了函数x(1)^2+x(2)^2

使用匿名函数时一定要注意函数本身的参数形式,如

f1(2,3)

表示2^2+3^2

f2(3)=3

表示3^2+4

f3([1,2])

表示1^2+2^2

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

三、内联函数

内联函数和普通的函数句柄,准确说跟匿名函数比较类似,可以通过一个函数表达式近而得到该函数。

语法格式如下:

1 变量名=inline(表达式);

2 变量名=inline('函数表达式', '变量名1','变量名2', ... ,'变量名n');(推荐)

例如:

1

>> a='x+y'

a =

x+y

>> f=inline(a)

f =

Inline function:

f(x,y) = x+y

>> f(2,3)

ans =

5

2

>> f=inline('x+y','x','y')

f =

Inline function:

f(x,y) = x+y

>> f(2,3)

ans =

5

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

创建句柄函数

str2func函数才支持生成匿名函数句柄

1.>> syms x

2. f = diff(sin(x)*exp(sqrt(x)),2)

3.g = str2func(['@(x)' vectorize(char(f))])

4.f1 = quad(g,1,2)

https://www.doczj.com/doc/139977094.html,/thread-93472-1-1.html

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

sqr=@(x)x.^2;

可以将它传递到其他函数的参数列表中。下面的代码将sqr匿名函数传递给matlab函数quad 来计算它从0到1的积分:

[c-sharp]view plaincopyprint?

>> quad(sqr,0,1)

ans =

0.3333

https://www.doczj.com/doc/139977094.html,/dfd1r/article/details/6279125

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

匿名函数在定义过程中可以调用任何Matlab函数(包括用户自定义的函数),也可以使用当时Matlab工作区中存在的任何变量。例如,下例中的匿名函数b_humpsab在定义时就是用了Matlab工作区中的变量a和b:

>> a = -.3;b=-.9;

>> b_humpsab = @ (x) 1./((x+a).^2+0.01)+1./((x+b).^2+0.04)-6;

>> b_humpsab([-1 0 1])

ans =

-5.1378 5.1765 16.0000

我们看到:b_humpsab在定义时引用了前面定义的变量a和b。应当注意,当a或b的值变化时,匿名函数并不改变,这是因为函数句柄值捕捉它创建时刻的变量的值,并不随变量的变化而变化。

>> a = 0; %changing the value of a does not chang the function.

>> b_humpsab([-1 0 1]) %evaluate again , get the same results

ans =

-5.1378 5.1765 16.0000

我们也可以针对一个内置函数或一个M文件函数创建匿名函数句柄。下面函数分别给予M 文件函数humps和Matlab内置函数cos创建了两个文件句柄:

>> c_Mfile = @humps %function handle for M-file function

c_Mfile =

@humps

>> c_Mfile(1) %evaluate humps(1)

ans =

16

>> c_builtin = @cos

c_builtin =

@cos

>> c_builtin(pi)

ans =

-1

由上面可知,要创建一个内置函数或一个M文件函数的句柄也很容易,只要在等号右边使用@符号,并在该符号后紧跟内置函数名或M文件函数名即可。

我们还可以利用单元数组同时创建多个内置函数和M文件函数的句柄,验证这些函数时,只要引用该函数所在单元即可。例如,下面的代码将上面两个独立创建的句柄利用一个单元数组c_dan创建在一起:

>> c_dan = {@humps @cos}

c_dan =

@humps @cos

>>c_dan{1}(1) %evaluate humps(1)

ans =

16

>> c_dan{2}(pi) %evaluate cos(pi)

ans =

-1

Matlab还专门提供了一些函数来处理和应用句柄。例如,函数functions将返回一个句柄的详细信息,如下例所示:

>> functions(c_Mfile)

ans =

function: 'humps'

type: 'simple'

file: 'C:\Program Files\MATLAB\R2009a\toolbox\matlab\demos\humps.m'

>> functions(c_builtin)

ans =

function: 'cos'

type: 'simple'

file: ''

>> functions(b_humps)

ans =

function: '@(x)1./((x+a).^2+0.01)+1./((x+b).^2+0.04)-6'

type: 'anonymous'

file: ''

workspace: {[1x1 struct]}

需要注意的是:fuctions函数通常只在调试程序时使用,因为它的返回值很容易发生变化。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

句柄函数

所谓句柄函数, 个人理解其实和别名差不太多, 比较类似于linux下alias命令, 即可以对某个函数以别名来调用, 而同时并不改变原来的命令名. 这样当我们想使用某个函数的时候只要直接调用函数句柄而不用调用整个函数.

这里我们的函数句柄也是存放在变量的里面, 我们知道在matlab环境中变量可以用来存放很多东西, 包括数值, 字符串等等, 在这里不妨可以理解为存放函数. 不过显然我们以前所调用的各个函数都是一个一个的m文件, 不可能直接放到变量的里面, 因此我们是抓住函数的句柄(handle)来实现. 将句柄函数赋值给变量需要用到@符号, 晕, @原来在matlab里面也是有的....

语法: 变量名=@函数名. 此处的函数名可以使当前matlab中可以使用的任意函数. @的作用就是将一个函数的函数句柄赋值给等号左边的变量.在需要调用函数的时候直接调用句柄即

可实现同样的功能.

示例

z=[1 2 3]; s=@sum; s(z)

此后可以直接用使用s()来替代原来的求和函数sum().

匿名函数

匿名函数可以说是函数句柄的一种特殊的用法, 这里所得到的函数句柄变量不指定向特定的函数(即不指向函数m文件中的函数名), 而是指向一个具体的函数表达式.

语法:变量名=@(输入参数列表)运算表达式示例

lc=@(x,y,z)(x*y*z); lc(2,3,4);

即可得到结果为24.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%

varargin和varargout函数的使用举例:

function testvar(argA,argB,varargin)

optargin=size(varargin,2);

stdargin=nargin-optargin;

fprintf('Number of inputs=%d\n',nargin)

fprintf('Inputs from individual arguments(%d):\n',stdargin)

if stdargin >=1

fprintf(' %d\n, argA')

end

if stdargin==2

fprintf(' %d\n, argB')

end

fprintf('Inputs packaged in varargin(%d):\n', optargin)

for k=1:size(varargin,2)

fprintf(' %d\n', varargin{k})

end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

函数句柄的调用:

function x=plotfhandle(fhandle,data)

plot(data,fhandle(data))

调用: plotfhandle(@sin,-pi:0.01:pi)

函数句柄的操作:

functions:返回函数句柄的相关信息

func2str:根据函数句柄创建一个函数名的字符串

str2func:由一个函数名的字符串创建一个函数句柄

save:从当前工作区间向M文件保存函数句柄

load:从一个M文件中向当前工作区间调用函数句柄

isa:判断一个变量是否包含一个函数句柄

isequal:判断两个函数句柄是否为某一相同函数的句柄

传送特定类型的参数

(1)传送字串

使用命令方式调用函数,本身就传送字串

使用函数方式调用函数时,被传送的字串一定要放在单引号内,其实这就是字串的定义。

要建立一个名为myapptests的新目录。使用函数mkdir。

mkdir('myapptests')或

dirname='myapptests';

mkdir(dirname)或

mkdir myapptests

(2)传送文件名

文件名可以作为参数传递,有两种方式:

对save和load函数,文件扩展名.mat是可选择的

load mydata.mat 命令格式

load('mydata.mat') 函数格式

指定加载ASCII文件,文件扩展名.dat是必需的

load mydata.dat -ascii 命令格式

load('mydata.dat','-ascii') 函数格式

指定输出给变量,一定用函数格式

savedata=load('mydata.dat')

函数执行时,如果程序中用到文件名,可以用下面的方法得到,而无须死板地将文件名编在代码中。

(作为一个参数传送文件名;

function myfun(datafile)

用input函数在提示符下写入:

filename=input('Enter name of file:','s');

(用uigetfile函数浏览文件

[filename,pathname]=uigetfile('*.mat','Select MAT-File');

(3)传送函数句柄

函数句柄作为输入参数传送给另一个函数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

当我们将一个函数名作为字符串传递给函数str2func时,也可以创建该函数的函数句柄。如下例:

>> myfunc = 'humps' %place name of humps.m in a string variable

myfunc =

humps

>> fh2 = @myfunc

??? Error: "myfunc" was previously used as a variable,

conflicting with its use here as the name of a function or command.

See MATLAB Programming, "How MATLAB Recognizes Function Calls That Use Command Syntax" for details.

>> fh2 = str2func(myfunc)

fh2 =

@humps

>> fh2 = str2func('humps')

fh2 =

@humps

>> isequal(fh2,fh_Mfile)

ans =

1

func2str函数执行与str2func相反的操作,它从一个函数句柄中提取函数名,并保存戴一个字符串变量中。当函数句柄是一个内置函数或M文件函数句柄时,该函数返回函数的名称,当函数句柄是一个匿名函数句柄时,该函数返回匿名函数的函数表达式。如下,利用func2str 函数分别从句柄fh2和af_humps中获取函数的名称:

>> func2str(fh2)

ans =

humps

>> func2str(af_humps)

ans =

@(x)1./((x+a).^2+0.01)+1./((x+b).^2+0.04)-6

>> class(ans)

ans =

char

>> isa(fh2,'function_handle')

ans =

1

函数句柄是Matlab提供给用户的一个强而有力的工具。首先,当一个函数句柄被创建时,它将记录函数的详细信息(见前面的functions函数的返回结果),因此,当使用一个函数的句柄调用该函数时,Matlab会立即执行,不再要进行文件搜索。尤其是当反复调用一个文件时,可以节省大量的搜索和时间,从而提高函数的执行效率。

函数句柄的另一个重要的特性是将它们可以用来标识子函数、私有函数和嵌套函数。一般情况下,这些函数对于用户来说都是“隐蔽”的,这些标识对于用户正确使用这些函数非常有用。例如,当我们在编写一个含有子函数的M文件时,可以为子函数创建一个句柄,并作为主函数的一个输出参数提供给用户,这样就是本来“隐蔽”的子函数“显现”出来,以便于用户对其进行验证和使用。下面的M文件函数框架(因为该函数并不执行实际有意义的操作)演示了一个在主函数中返回子函数句柄的例子:

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function out=myfunction(select)

%MYFUNCTION Return function handle to a subfunction.

% Example function demonstrating function handles to subfunction

switch select

case 'case1'

out = @local_subfun1;

case 'case2'

out = @local_subfun2;

otherwise

out = [];

error('Unknown Input');

end

function a=local_fun1(b,c)

%LOCAL_SUBFUN Some function operation.

% code that operates on the input arguments b and c

% and returns content in the variable a

%end of local_subfun1

function d=local_fun2(e,f)

%LOCAL_SUBFUNC Some functon operation.

% code that operates on the input arguments e and f

% and returns content in the variable d

%end of loacl_fun2

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 下面的代码通过设置select参数的值获取了一个子函数的句柄,并在主函数的调用环境中调用这个子函数:

>> h_subfun = myfunction('case2');

>> dout = h_subfun(x,y);

上面代码之所以能运行,是因为子函数句柄记录了子函数的所有信息,包括子函数的声明、代码和位置等。

https://www.doczj.com/doc/139977094.html,/?????/blog/item/56b72194dea5e10e7af480fc.html

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%

clc;clear;

syms x;

y=x^3+2*x^2+x+1;

dy=diff(y,x);

ddy=diff(dy,x);

ddy11=@(x)eval_r(diff(dy,x));

ddy12=@(x)eval_r(ddy);

ddy21=inline(eval_r(diff(dy,x)));

ddy22=inline(eval_r(ddy));

ddy11=ddy11(2)

ddy12=ddy12(2)

ddy21=ddy21(2)

ddy22=ddy22(2)

为什么ddy11和ddy12, ddy21, ddy22所得的值不一样呢?

inline函数和@究竟有些什么区别?

请高手指点!!

谢谢!!

恩是这个原因在使用@创建匿名函数时,@(varlist)之后的表达式一般不能是符号变量,只能是因变量和常数

但是inline函数可以将符号表达式转换为inline函数

另外eval计算的也是字符串表达式的结果,一般不处理符号表达式,如果表达式不是字符串,Matlab使用char函数将其转换为字符串

总结性说,inline()可以将符号表达式转换为函数,@()不可以,匿名函数一般用于自定义简单函数

我们来分析下ddy11=@(x)eval_r(diff(dy,x));

首先将计算diff(dy,x)返回符号表达式6*x+4,eval不管它的输入参数是什么,首先使用char函数将输入参数符号表达式6*x+4转换为字符串'6*x+4',然后创建匿名函数,该匿名函数将调用eval函数进行

计算函数值

上面分析是我们认为的过程,好像没有问题!其实问题出在了diff(dy,x),由于Matlab中diff的参数可以多种格式,而匿名函数直接提供了x的值,此时Matlab直接将x看成是对dy的x次导数,而不是对dy进行关于变量x的一阶就到,故实际过程是

1、调用匿名函数的时候,将数据x直接传递给嵌套函数eval

2、此时x是一个常数,不是一个符号变量

3、diff(dy,x)对dy进行x阶级求导,注意不是对dy进行关于x的一阶导数

4、导数计算完毕后,eval函数将返回的参数转换为字符串

5、eval计算函数值

也许你会问,为什么只是将diff(dy,x)中的x换成了常数,而不将dy中的x也换成常数呢,呵呵这就是Matlab的智能的方面,diff第一个参数必须是符号变量,故没有将dy中x替换,另外就是dy中没有显示的表达出x,如果你直接显示表达出来,那么Matlab也会毫不客气的将它替换了

经过上面分析,我们就可以理解为什么dyy11(2)=6,dyy11(3)=0了

改进方法是将你的ddy11=@(x)eval_r(diff(dy,x));改为ddy11=@(x)eval_r(diff(dy));或者

ddy11=@(x)eval_r(diff(dy,'x'));

实验四 MATLAB符号运算

实验四 MATLAB 符号运算 一、实验目的 掌握符号变量和符号表达式的创建,掌握MATLAB 的symbol 工具箱的一些基本应用。 二、实验内容 (1) 符号变量、表达式、方程及函数的表示。 (2) 符号微积分运算。 (3) 符号表达式的操作和转换。 (4) 符号微分方程求解。 三、实验步骤 1. 符号运算的引入 在数值运算中如果求x x x πsin lim 0→,则可以不断地让x 接近于0,以求得表达式接近什么数,但是终究不能令0=x ,因为在数值运算中0是不能作除数的。MATLAB 的符号运算能解决这类问题。输入如下命令: >>f=sym('sin(pi*x)/x') >>limit(f,'x',0) >> f=sym('sin(pi*x)/x') f = sin(pi*x)/x >> limit(f,'x',0) ans = Pi 2. 符号常量、符号变量、符号表达式的创建 1) 使用sym( )创建 输入以下命令,观察Workspace 中A 、B 、f 是什么类型的数据,占用多少字节的内存空间。 >> A=sym('1') >> B=sym('x') >> f=sym('2*x^2+3*y-1') >> clear >> f1=sym('1+2') >> f2=sym(1+2) >> f3=sym('2*x+3') >> f4=sym(2*x+3) >> x=1 >> f4=sym(2*x+3) > A=sym('1') A = 1

>> B=sym('x') B = x >> f=sym('2*x^2+3*y-1') f = 2*x^2+3*y-1 >> clear >> f1=sym('1+2') f1 = 1+2 >> f2=sym(1+2) f2 = 3 >> f3=sym('2*x+3') f3 = 2*x+3 >> f4=sym(2*x+3) ??? Undefined function or variable 'x'. >> x=1 x = >> f4=sym(2*x+3) f4 =

matlab中常见函数功用

⊙在matlab中clear,clc,clf,hold作用介绍 clear是清变量, clc只清屏, clf清除图形窗口上的旧图形, hold on是为了显示多幅图像时,防止新的窗口替代旧的窗口。 ①format:设置输出格式 对浮点性变量,缺省为format short. format并不影响matlab如何计算和存储变量的值。对浮点型变量的计算,即单精度或双精度,按合适的浮点精度进行,而不论变量是如何显示的。对整型变量采用整型数据。整型变量总是根据不同的类(class)以合适的数据位显示,例如,3位数字显示显示int8范围-128:127。 format short, long不影响整型变量的显示。 format long 显示15位双精度,7为单精度(scaled fixed point) format short 显示5位(scaled fixed point format with 5 digits) format short eng 至少5位加3位指数 format long eng 16位加至少3位指数 format hex 十六进制 format bank 2个十进制位 format + 正、负或零 format rat 有理数近似 format short 缺省显示 format long g 对双精度,显示15位定点或浮点格式,对单精度,显示7位定点或浮点格式。 format short g 5位定点或浮点格式 format short e 5位浮点格式 format long e 双精度为15位浮点格式,单精度为7为浮点格式 ②plot函数 基本形式 >> y=[0 0.58 0.70 0.95 0.83 0.25]; >> plot(y) 生成的图形是以序号为横坐标、数组y的数值为纵坐标画出的折线。 >> x=linspace(0,2*pi,30); % 生成一组线性等距的数值 >> y=sin(x); >> plot(x,y) 生成的图形是上30个点连成的光滑的正弦曲线。 多重线 在同一个画面上可以画许多条曲线,只需多给出几个数组,例如 >> x=0:pi/15:2*pi; >> y=sin(x); >> w=cos(x);

matlab符号运算

MATLAB程序设计教程(9)——MATLAB符号计算 by:ysuncn(欢迎转载,请注明原创信息) 第9章MATLAB符号计算 9.1 符号对象 9.2 符号微积分 9.3 级数 9.4 符号方程求解 9.1 符号对象 9.1.1 建立符号对象 1.建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式为: 符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。 应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。

下面的命令用于比较符号常量与数值常量在代数运算时的差别。 (2) syms函数 函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 … 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。 2.建立符号表达式 含有符号对象的表达式称为符号表达式。建立符号表达式有以下3种方法: (1)利用单引号来生成符号表达式。 (2)用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。 9.1.2 符号表达式运算 1.符号表达式的四则运算 符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul和symdiv来实现,幂运算可以由sympow来实现。

(完整版)matlab函数大全(非常实用)

信源函数 randerr 产生比特误差样本 randint 产生均匀分布的随机整数矩阵 randsrc 根据给定的数字表产生随机矩阵 wgn 产生高斯白噪声 信号分析函数 biterr 计算比特误差数和比特误差率 eyediagram 绘制眼图 scatterplot 绘制分布图 symerr 计算符号误差数和符号误差率 信源编码 compand mu律/A律压缩/扩张 dpcmdeco DPCM(差分脉冲编码调制)解码dpcmenco DPCM编码 dpcmopt 优化DPCM参数 lloyds Lloyd法则优化量化器参数 quantiz 给出量化后的级和输出值 误差控制编码 bchpoly 给出二进制BCH码的性能参数和产生多项式convenc 产生卷积码 cyclgen 产生循环码的奇偶校验阵和生成矩阵cyclpoly 产生循环码的生成多项式 decode 分组码解码器 encode 分组码编码器 gen2par 将奇偶校验阵和生成矩阵互相转换gfweight 计算线性分组码的最小距离 hammgen 产生汉明码的奇偶校验阵和生成矩阵rsdecof 对Reed-Solomon编码的ASCII文件解码rsencof 用Reed-Solomon码对ASCII文件编码rspoly 给出Reed-Solomon码的生成多项式syndtable 产生伴随解码表 vitdec 用Viterbi法则解卷积码 (误差控制编码的低级函数) bchdeco BCH解码器 bchenco BCH编码器 rsdeco Reed-Solomon解码器 rsdecode 用指数形式进行Reed-Solomon解码 rsenco Reed-Solomon编码器 rsencode 用指数形式进行Reed-Solomon编码 调制与解调

matlab函数用法

A a abs 绝对值、模、字符的ASCII码值 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具 all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名 any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环中断指令 brighten 亮度控制 C c

capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极或柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具cdf2rdf 复数特征值对角阵转为实数块对角阵ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量同时给出条件数condest 范-1条件数估计 conj 复数共轭 contour 等位线 contourf 填色等位线 contour3 三维等位线

matlab各种函数的用法

1 Text函数的用法: 用法 text(x,y,'string')在图形中指定的位置(x,y)上显示字符串string text(x,y,z,'string') 在三维图形空间中的指定位置(x,y,z)上显示字符串string 2, plot([0,z1,z12],'-b','LineWidth',3)[ ]里面表示数组. 3, x,y均为矩阵,plot命令就是画出x,y矩阵对应的二维平面的点形成的曲线。y(:,1)中逗号前是行,逗号后是列,冒号表示从几到几。所以y(:,1)表示第一列的所有元素。如果是y(3:5,1)则表示第一列的第3到第5行对应的元素。只要你的y矩阵有100列,那你当然可以将1改成100。同理,x矩阵也可以这样。 4 sym的意思是symbol,就是后面括号里面是个代数式,要进行符号运算,class()判断对象是什么类型。 5 matlab控制运算精度用的是digits和vpa这两个函数 xs = vpa(x,n) 在n位相对精度下,给出x的数值型符号结果xs xs = vpa(x) 在digits指定的精度下,给出x的数值型符号结果xs

digits用于规定运算精度,比如: digits(20); 这个语句就规定了运算精度是20位有效数字。但并不是规定了就可以使用,因为实际编程中,我们可能有些运算需要控制精度,而有些不需要控制。vpa就用于解决这个问题,凡是用需要控制精度的,我们都对运算表达式使用vpa函数。例如: digits(5); a=vpa(sqrt(2)); 这样a的值就是1.4142,而不是准确的1.4880 又如: digits(5); a=vpa(sqrt(2)); b=sqrt(2); 这样a的值是1.4142,b没有用vpa函数,所以b是1.4880...... 6

matlab基本函数的用法

一. Matlab中常见函数基本用法 1.sum (1 )sum(A)A为矩阵得出A矩阵每列的和组成的一个矢量; A为矢量得出A的各元 素之和 (2)sum(diag(A))得矩阵A的对角元素之和 (3)sum(A,dim) A为矩阵,sum(A,1)按列求和;sum(A,2)按行求和 2.max(min) (1)max(A) 若A为矩阵则得出A矩阵每列的最大元素组成的一个矢量 若A为矢量则得出A中最大的元 (2)max(A,B) A与B为同维矩阵得出取A 与B中相同位置元素中较大者组成的新矩阵 (3)max(A,[],dim) max(a,[ ],1),求每列的最大值;max(a,[ ],2)求每行的最大值 3.find (1)find(X)若X为行向量则得出X中所有非零元素所在的位置(按行)若X为列向量或矩阵则得出X中所有非零元素的位置(按列)(2)ind = find(X, k)/ind = find(X,k,'first') 返回前k个非零元的指标ind = find(X,k,'last') 返回后k个非零元的指标 (3)[row,col] = find(X) row代表行指标,col代表列指标 [row,col,val] = find(X) val表示查找到对应位置非零元的值 [row,col] = find(A>100 & A<1000) 找出满足一定要求的元素 4.reshape (1)B = reshape(A,m,n) 把A变成m*n的矩阵 5.sort (1)B = sort(A) 把A的元素按每列从小到大的顺序排列组成新矩阵

(2)B = sort(A,dim) dim=1同(1); dim=2 把A按每行从小到大的顺序排列组成新矩阵 6.cat (1)C = cat(dim, A, B) dim=1相当于[A;B];dim=2相当于[A,B] (2)C = cat(dim, A1, A2, A3, A4, ...) 类推(1) 7.meshgrid (1)[X,Y] = meshgrid(x,y) 将向量x和y定义的区域转换成矩阵X和Y,矩阵X的行向量是向量x的简单复制,而矩阵Y的列向量是向量y的简单复制。(2)[X,Y] = meshgrid(x) (1)y=x中情形 8.diag (1)X = diag(v,k) 向量v作为X的第k对角线上的元素X的其他元素为零(2)X = diag(v) (1)中k=0的情况 (2)v = diag(X,k) v为矩阵X的第k对角线的元素组成的列向量 (4)v = diag(X) (3)中k等于零的情况

MATLAB句柄式图形常用函数

句柄式图形常用函数: (1)get(h)返回句柄值h所指定的图形对象的所有属性名称与相对应的属性值 (2)a = get(h)返回由句柄值h所指定的图形对象的属性结构数组,并且该数组的字段名称就是该对象的属性名称。 (3)a = get(0,'factory')返回所有能由用户设置的属性的默认定义值。 (4)a = get(0,'FactoryObjectTypePropertyName1', 'FactoryObjectTypePropertyName2',...)返回指定对象类型指定的属性值,输入参数FactoryObjectTypePropertyName为一个关键词,由字符Factory与图形对象类型(如Figure)还有属性名称(如Color)组成。 a = get(0,'factoryFigureColor')返回Figure对象的Color属性值。 (5)a = get(h,'DefaultObjectTypePropertyName1', 'DefaultObjectTypePropertyName1',...) 返回句柄值为h的对象指定属性的默认值。如“DefaultFigureColor”。 (6)a = get(h,'default')列出h对象的所有属性的默认属性值 (7)a = set(h)返回句柄值h所指定的图形对象的所有属性名称对应的可设置属性值,a为结构数组,存储对象的属性名称,其字段值为相对应的属性值。属性值中用{}括起来的表示默认值。 (8)set(h,a)使用指定的属性值来设置由句柄值h所指定的对象属性,a为结构数组,其字段名称为对象的属性名称,字段值为相对应的属性值。 (9)a = set(0,'factory')返回那些用户可以设置默认值的所有对象的属性,同时显示可设置的属性值。 (10)a=set(0,'FactoryObjectTypePropertyName')返回所有对象中指定的属性名称FactoryObjectTypePropertyName的所有可能的属性值。 (11)a = set(h,'属性名','属性值')设置句柄值为h的对象的与属性名对应的属性值。 (12) set(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName2',...)对句柄值为h的对象设置特定属性名称的属性默认值。 (13)H = findobj;返回Root对象与其所有子对象的句柄值 (14)H = findobj(h);返回h变量的句柄值 (15)H = findobj(?属性名称…,?属性值…);依据对象的属性名称和属性值找出匹配的对象句柄值。 (16)H = findobj(ObjectHandles,?属性名称…,?属性值…);根据限定的对象列表找出与对象的属性名称和属性值匹配的对象句柄值 (17)gcf返回当前Figure对象的句柄值 gca返回当前axes对象的句柄值 gco返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab会把当前图形对象的句柄值存放在Figure的CurrentObject属性中Figure对象的属性篇

matlab句柄属性

matlab图形句柄属性 句柄式图形常用函数: (1)get(h)返回句柄值h所指定的图形对象的所有属性名称与相对应的属性值 (2)a = get(h)返回由句柄值h所指定的图形对象的属性结构数组,并且该数组的字段名称就是该对象的属性名称。 (3)a = get(0,'factory')返回所有能由用户设置的属性的默认定义值。 (4)a = get(0,'FactoryObjectTypePropertyName1','FactoryObjectTypePropertyName2',...) 返回指定对象类型指定的属性值,输入参数FactoryObjectTypePropertyName为一个关键词,由字符Factory与图形对象类型(如Figure)还有属性名称(如Color)组成。 a = get(0,'factoryFigureColor')返回Figure对象的Color属性值。 (5)a = get(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName1',...) 返回句柄值为h的对象指定属性的默认值。如“DefaultFigureColor”。 (6)a = get(h,'default')列出h对象的所有属性的默认属性值 (7)a = set(h)返回句柄值h所指定的图形对象的所有属性名称对应的可设置属性值,a为结构数组,存储对象的属性名称,其字段值为相对应的属性值。属性值中用{}括起来的表示默认值。 (8)set(h,a)使用指定的属性值来设置由句柄值h所指定的对象属性,a为结构数组,其字段名称为对象的属性名称,字段值为相对应的属性值。 (9)a = set(0,'factory')返回那些用户可以设置默认值的所有对象的属性,同时显示可设置的属性值。 (10)a=set(0,'FactoryObjectTypePropertyName')返回所有对象中指定的属性名称FactoryObjectTypePropertyName的所有可能的属性值。 (11)a = set(h,'属性名','属性值')设置句柄值为h的对象的与属性名对应的属性值。(12)set(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName2',...) 对句柄值为h的对象设置特定属性名称的属性默认值。 (13)H = findobj;返回Root对象与其所有子对象的句柄值 (14)H = findobj(h);返回h变量的句柄值 (15)H = findobj(’属性名称‘,’属性值‘);依据对象的属性名称和属性值找出匹配的对象句柄值。 (16)H = findobj(ObjectHandles,’属性名称‘,’属性值‘);根据限定的对象列表找出与对象的属性名称和属性值匹配的对象句柄值 (17)gcf返回当前Figure对象的句柄值 gca返回当前axes对象的句柄值 gco返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab 会把当前图形对象的句柄值存放在Figure的CurrentObject属性中。 Figure 对象是指屏幕(root对象)中产生的窗口,并且MATLAB允许用Figure 函数建立任意数目的窗口,但所有的绘图函数,如plot surf等,如果窗口未存在时,会自动建立一个新的窗口;每个窗口则构成一个Figure 对象。

matlab符号运算函数大全

m a t l a b符号运算函数大 全 The Standardization Office was revised on the afternoon of December 13, 2020

算术符号操作 命令 +、-、*、.*、\、.\、/、./、^、.^、’、.’ 功能符号矩阵的算术操作 用法如下: A+B、A-B 符号阵列的加法与减法。 若A与B为同型阵列时,A+B、A-B分别对对应分量进行加减;若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行加减。 A*B 符号矩阵乘法。 A*B为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵 A的列数等于矩阵B的行数。即:若 A n*k* B k*m=(a ij)n*k.*(b ij)k*m= C n*m=(c ij)n*m,则,i=1,2,…,n; j=1,2,…,m。或者至少有一个为标量时,方可进行乘法操作,否则 将返回一出错信息。 A.*B 符号数组的乘法。 A.*B为按参量A与B对应的分量进行相乘。A与B必须为同型 阵列,或至少有一个为标量。即: A n*m.* B n*m=(a ij)n*m.*(b ij)n*m= C n*m=(c ij)n*m,则c ij= a ij* b ij, i=1,2,…,n;j=1,2,…,m。 A\B 矩阵的左除法。 X=A\B为符号线性方程组A*X=B的解。我们指出的是,A\B近 似地等于inv(A)*B。若X不存在或者不唯一,则产生一警告信 息。矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方 程组必须是相容的。 A.\B 数组的左除法。 A.\B为按对应的分量进行相除。若A与B为同型阵列时, A n*m.\ B n*m=(a ij)n*m.\(b ij)n*m= C n*m=(c ij)n*m,则c ij= a ij\ b ij,i=1,2,…,n; j=1,2,…,m。若若A与B中至少有一个为标量,则把标量扩大为 与另外一个同型的阵列,再按对应的分量进行操作。 A/B 矩阵的右除法。 X=B/A为符号线性方程组X*A=B的解。我们指出的是,B/A粗 略地等于B*inv(A)。若X不存在或者不唯一,则产生一警告信 息。矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方 程组必须是相容的。 A./B 数组的右除法。 A./B为按对应的分量进行相除。若A与B为同型阵列时, A n*m./ B n*m=(a ij)n*m./(b ij)n*m= C n*m=(c ij)n*m,则c ij= a ij/b ij,i=1,2,…,n; j=1,2,…,m。若A与B中至少有一个为标量,则把标量扩大为与 另外一个同型的阵列,再按对应的分量进行操作。 A^B 矩阵的方幂。

matlab句柄图形对象

句柄图形对象

(1) function my_plot x=1:10 y=peaks(10) %Z = peaks(n);returns an n-by-n matrix. cax=newplot %newplot prepares a figure and axes for subsequent graphics commands. %h = newplot prepares a figure and axes for subsequent graphics commands and returns a handle to the current axes. LSO=['- ';'--';': ';'-.'] %此处第一项与第三项要加空格,使得各行元素相等 set(cax,'FontName','Times','FontAngle','italic') %设置图形坐标轴的字体与字体倾斜角度 set(get(cax,'Parent'),'MenuBar','none')%关闭工具栏 line_handles=line(x,y,'Color','b') %将10条曲线利用直线全部画出,并返回直线句柄向量,10条曲线对应10个句柄值 %所以该句柄向量一共有10个元素 style=1 for i=1:length(line_handles) if style>length(LSO)

style=1 end set(line_handles(i),'LineStyle',LSO(style,:)) %设置直线属性 style=style+1 end grid on

Matlab中常见数学函数的使用

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

我们也可在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的数学式转换命令’) 即:maple(‘convert(表达式,form)’)将表达式转换成form的表示方式 maple(‘convert(表达式,form, x)’)指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 如何用Matlab进行变量替换 syms 表达式和代换式中包含的所有变量subs(表达式,要替换的变量或式子,代换式) 如何用matlab进行复数运算 a+b*i 或 a +b*j表示复数a+bi 或a+bj real(z)求复数z的实部 imag(z)求复数z的虚部 abs(z)求复数z的模 angle(z)求复数z的辐角, conj(z)求复数z的共轭复数 exp(z)复数的指数函数,表示e^z 如何在matlab中表示集合 [a, b, c,…] 表示由a, b, c,…组成的集合(注意:元素之间也可用空格隔开) unique(A) 表示集合A的最小等效集合(每个元素只出现一次) 也可调用maple的命令,格式如下: maple('{a, b, c,…}')表示由a, b, c,…组成的集合 下列命令可以生成特殊的集合: maple(‘{seq(f(i),i=n..m)}’)生成集合{f(n), f(n+1), f(n+2), … , f(m)} 如何用Matlab求集合的交集、并集、差集和补集

完整word版,MATLAB符号运算

符号运算 科学计算包括数值计算和符号计算两种计算,数值计算是近似计算;而符号计算则是绝对精确的计算。 符号变量的生成和使用 1、符号变量、符号表达式和符号方程的生成 (1)、使用sym函数定义符号变量和符号表达式 单个符号变量 sqrt(2) sym(sqrt(2)) %显示精确结果 a=sqrt(sym(2)) %显示精确结果 double(a) sym(2)/sym(3) %显示精确结果 2/5+1/3 sym(2/5+1/3) %显示精确结果 sym(2)/sym(5)+sym(1)/sym(3) %显示精确结果 sym函数定义符号表达式:单个变量定义法,整体定义法 单个变量定义法 a=sym('a') b=sym('b') c=sym('c') x=sym('x') f=a*x^2+b*x+c 整体定义法 f=sym('a*x^2+b*x+c') g=f^2+4*f-2 (2)、使用syms函数定义符号变量和符号表达式 一次可以创建任意多个符号变量syms var1 var2 var3… syms a b c x f=a*x^2+b*x+c g=f^2+4*f-2 (3)、符号方程的生成 函数:数字和变量组陈的代数式 方程:函数和等号组成的等式 用sym函数生成符号方程: equation1=sym('sin(x)+cos(x)=1') 2、符号变量的基本操作 (1)、findsym函数用于寻找符号变量 findsym(f):找出f表达式中的符号变量 findsym(s,n):找出表达式s中n个与x接近的变量 syms a alpha b x1 y findsym(alpha+a+b)

matlab符号运算符

Matlab符号运算符的使用 一、&&/||/&/| |:数组逻辑或 ||:先决逻辑或 &:数组逻辑与 &&:先决逻辑与 &&和||被称为&和|的short circuit形式。 先决逻辑符号含义: 先判断左边是否为真;若为真,则不再判断右边;若为假,才继续进行或运算 先判断左边是否为假;若为假,则不再判断右边;若为真,才继续进行与运算两种运算符号的区别: 先决逻辑运算的运算对象只能是标量 数组逻辑运算可为任何维数组,运算符两边维数要相同 举例分析: A&B :首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。 A&&B:首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假, 就可以判断整个表达式的值为假,就不需要再判断B的值。这种用法非常有用, 如果A是一个计算量较小的函数,B是一个计算量较大的函数,那么首先判断A 对减少计算量是有好处的。 另外这也可以防止类似被0除的错误。 Matlab中的if和while语句中的逻辑与和逻辑或都是默认使用short-circuit形式。// 这可能就是有时候用&和| 会报错的原因。

二、系统结构体内的变量 一般都是小写。 matlab区分大小写。 三、== 表示逻辑相等,返回结果,相等为1,不等为0。 四、.*(times)点乘 times Array multiply 数组乘 Syntax c = a.*b c = times(a,b) Description c = a.*b multiplies arrays a an d b element-by-element and returns th e result in c. Inputs a and b must have the same size unless one is a scalar. 注释:a、b要同尺寸,或其中一个为标量。 c = times(a,b) is calle d for th e syntax a.*b when a or b is an object. Example a = [1 2 3]'; b = [5 6 7]'; c = a.*b; 五、矩阵或向量共轭转置“’”和转置“.’” 若矩阵由实数构成,二者作用一样;

最新Matlab中常见数学函数的使用

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

如何用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的数学式转换命令’) 即:maple(‘convert(表达式,form)’)将表达式转换成form的表示方式 maple(‘convert(表达式,form, x)’)指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 如何用Matlab进行变量替换 syms 表达式和代换式中包含的所有变量subs(表达式,要替换的变量或式子,代换式) 如何用matlab进行复数运算 a+b*i 或 a +b*j表示复数a+bi 或a+bj real(z)求复数z的实部 imag(z)求复数z的虚部 abs(z)求复数z的模 angle(z)求复数z的辐角, conj(z)求复数z的共轭复数 exp(z)复数的指数函数,表示e^z 如何在matlab中表示集合 [a, b, c,…] 表示由a, b, c,…组成的集合(注意:元素之间也可用空格隔开) unique(A) 表示集合A的最小等效集合(每个元素只出现一次) 也可调用maple的命令,格式如下: maple('{a, b, c,…}')表示由a, b, c,…组成的集合 下列命令可以生成特殊的集合: maple(‘{seq(f(i),i=n..m)}’)生成集合{f(n), f(n+1), f(n+2), … , f(m)} 如何用Matlab求集合的交集、并集、差集和补集

matlab 基础函数用法总结

1、Size 函数用法 例如:1,2,3;4,5,6]是一个2*3的矩阵,则: d = size(X); %返回矩阵的行数和列数,保存在d中 [m,n] = size(X)%返回矩阵的行数和列数,分别保存在m和n中 m = size(X,dim);%返回矩阵的行数或列数,dim=1返回行数,dim=2返回列数 2、Corrcoef 函数用法 corrcoef(x,y)表示序列x和序列y的相关系数,得到的结果是一个2*2矩阵,其中对角线上的元素分别表示x和y的自相关,非对角线上的元素分别表示x 与y的相关系数和y与x的相关系数,两个是相等的 3、sort函数用法 sort(X) 功能:返回对向量X中的元素按列升序排列的新向量。 [Y, I] = sort(A, dim, mode) 功能:对矩阵A的各列或各行重新排序,I记录Y中的元素在排序前A中位置,其中dim指明读A的列还是行进行排序。若dim=1,则按列排序;若dim=2,则按行排序。mode为排序的方式,取值'ascend'为升序,'descend'为降序 4、Legend 函数用法 legend(string1,string2,string3,┈) 分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。 例如: plot(x,sin(x),?.b?,x,cos(x),?+r?) legend(…sin?,?cos?) //这样就可以把”.”标识为”sin”,把”+”标识为“cos” 5、find 函数用法 找到非零元素的索引和值 语法: 1. ind = find(X) 2. ind = find(X, k) 3. ind = find(X, k, 'first') 4. ind = find(X, k, 'last') 5. [row,col] = find(X, ...) 6. [row,col,v] = find(X, ...) 说明: 1. ind = find(X)

MATLAB图形句柄

第七章 MATLAB图形句柄 与第四章的高层绘图指令相比,本章的内容更深入MATLAB可视化功能的内核。编写本章的目的有两个:(1)使读者更深入地理解高层绘图指令,从而可绘制出更精细更生动更个性的图形;(2)使读者能利用低层图形指令和图形对象属性开发专用绘图函数。 本章在内容安排上有如下考虑: 保证概念、结构和方法的完整性:由表及里、由浅入深的原则系统阐述句柄图形体系、图形对象、属性和操作方法。 突出要点、新点和难点:句柄图形体系有11个基本图形对象,每个对象的属性少则20几个,多则近百个。对此,MATLAB自带资料有详尽的文字说明。因此,本章只对最常用的、不可或缺的、以及较难掌握的内容进行说明。 强调“可操作性”体现“范例引导概念”的本书宗旨:针对MATLAB自带资料缺少完整、可操作应用实例的弱点,本章设计了部分算例,读者通过阅读或操作这些范例,可掌握各指令、属性之间的有机配合,从而更具体更真切地理解句柄图形。 第一节图形对象及其句柄 MATLAB语言的句柄绘图可以对图形各基本对象进行更为细腻的修饰,可以产生更为复杂的图形,而且为动态图形的制作奠定了基础。 高层绘图与底层绘图的区别 (1)高层绘图函数—是对整个图形进行操作的,图形每一部分的属性都是按缺省方式设置的,充分体现了MATLAB语言的实用性; (2)底层绘图函数—可以定制图形,对图形的每一部分进行控制,用户可以用来开发用户界面以及各专业的专用图形。充分体现了MATLAB语言的开发性。 一、图形对象 MATLAB的图形对象包括计算机屏幕、图形窗口、坐标轴、用户菜单、用户控件、曲线、曲面、文字、图像、光源、区域块和方框等。系统将每一个对象按树型结构组织起来。 例: 河流断面面积计算程序(exam7_1.m)。 a=[13.0000,8.7700,8.7700,4.7700,4.2700,4.6700,4.1700,2.9700,1.7700,1.0700,1 .6700,1.6700,2.5700,4.6700,3.9700,14.7000] %河底高程 x=[0,80,190,245,290,330,400,460,535,580,620,665,730,810,860,890] %起点距 Hf_1=figure('NumberTitle','off','name','断面面积计算','Position',[50,80,700,460]) %图形标题 plot(x,a) %绘断面图 set(gca,'Xdir','Normal','Ydir','Normal','Box','off'); s=input('请输入水位值:'); ss=s-a; sa=length(a) for i=1:sa; if ss(i)<0; sss(i)=0; else sss(i)=ss(i); end

Matlab用法大全

Matlab用法大全 1求取系统单位阶跃响应:step() step()函数的用法 y=step(num,den,t):其中num和den分别为系统传递函数描述中的分子和分母多项式系数,t为选定的仿真时间向量,一般可以由t=0:step:end等步长地产生出来。该函数返回值y为系统在仿真时刻各个输出所组成的矩阵 [y,x,t]=step(num,den):此时时间向量t由系统模型的特性自动生成, 状态变量x返回为空矩阵。 [y,x,t]=step(A,B,C,D,iu):其中A,B,C,D为系统的状态空间描述矩阵,iu用来指明输入变量的序号。x为系统返回的状态轨迹。 2h = tf([1 1],[1 2 5]); [num,den] = tfdata(h,'v') 3a(:,j)表示a的j列的所有行元素 a(i,:)表示i行的所有列元素 4a=[]创建空矩阵 5 eval ()函数的功能就是将括号内的字符串视为语句并运行 例如:eval ('y1=sin(2)')就是相当于在matlab命令窗口输入了y1=sin(2)这条命令。 多在循环中使用,可以对多个名字有规则的变量或文件进行操作, 例一: for x=1:5 eval (['y',num2str(x),'=',num2str(x^2),';']) end 以上语句等价于执行以下5句: ynum2str(1)=num2str(1^2); ynum2str(2)=num2str(2^2); ynum2str(3)=num2str(3^2); ynum2str(4)=num2str(4^2); ynum2str(5)=num2str(5^2); 例二: subplot(711);plot(t,y);title('原始信号’); for i=1:6 subplot(7,1,i+1); plot(t,imf(i,:)); eval (['title(''IMF',int2str(i),''');']); end ------------------------- 以上6行程序实际上是执行以下7条命令 subplot(711);plot(t,y);title('原始信号'); subplot(7,1,2);plot(t,imf(1,:));title('IMF1'); subplot(7,1,3);plot(t,imf(2,:));title('IMF2'); subplot(7,1,4);plot(t,imf(3,:));title('IMF3'); subplot(7,1,5);plot(t,imf(4,:));title('IMF4');

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