Matlab中函数文件prime.m的用法
- 格式:doc
- 大小:44.50 KB
- 文档页数:5
数学实验二实验内容:学习matlab的m文件编写和函数的编写,体会matlab编程特点,掌握matlab 的编程基本方法。
要求:一.学习ppt教案的例题代码,能正确的输入、运行代码;二.写出如下各段代码的作用,将以下各段循环执行的代码,改为不需要循环的矩阵和数组运行,并使用tic,toc测试不同代码的执行时间:%程序1,文件名:ex2_2_1.mticdx = pi/30;nx = 1 + 2*pi/dx;for i = 1:nxx(i) = (i-1)*dx;y(i) = sin(3*x(i));endtoc以上程序实现将[0,2*pi]间隔pi/30分成60等分,x和y分别为61个元素的数组,y为计算sin(3x)的值。
以上程序可以使用简单的matlab数组计算实现:x2=0:pi/30:2*pi;y2=sin(3*x2);大家可以比较一下,x1和x2完全相同,y和y2也完全相同。
%程序2,文件名:ex2_2_2.mticA=round(2+rand(50,60)*6); 生成一个在[2,8]上均匀分布的50*60随机数组[X,Y]=size(A); 求出其大小;X=50,Y=60minA=A(1,1); 设最小值为矩阵A的第1行1列的元素for i=1:Xfor j=1:Yif A(i,j)<minAminA=A(i,j);minX=i;minY=j;endendend 以上程序按行、列搜索矩阵A的最小值,若当前值A(I,j)小,则将最小值设为当前值;[minA ,minX,minY] 输出矩阵最小值minA及矩阵最小值所在的行minX、列minY。
toc上述程序可以使用find函数及min函数实现;此时只需: minA=min(A(:));[minX,minY]=find(A ’==minA,1);%注意此处需将矩阵A 转置,因为matlab 中是按列优先搜索的,而题目的程序是按行有限搜索。
m函数的使用方法
m函数是MATLAB中的一个重要函数,用于向数组中添加元素或修改元素。
m函数的一般形式如下:
```
m = [变量1;变量2;变量3]
```
其中,变量1、2、3分别是函数的名称和输入参数,数组中指定了要添加到数组中的元素。
例如,如果要向一个名为`a`的数组中添加两个元素,可以使用以下代码:
```
a = [1 2; 3 4]
m = a
```
这将创建一个新的数组`m`,其中包含`[1 2]`和`[3 4]`两个元素。
如果要将一个数组中的某些元素替换为另一个数组,可以使用以
下代码:
```
a = [1 2; 3 4]
b = [5 6]
m = a
```
这将创建一个新的数组`m`,其中`[1 2]`替换为`[5 6]`,而`[3
4]`保留不变。
m函数还可以用于向数组中添加注释或添加文本。
使用以下代码可以为数组`a`添加注释:
```
a = [1 2; 3 4]
m = a
a["Hello"] = " World!"
```
这将在数组`a`中创建一个名为`Hello`的子元素,其中包含字符串`" World!"`。
总之,m函数是MATLAB中非常强大和灵活的功能之一,可以用于许多不同的用途。
MatLab常见函数和运算符号解读convhull:凸壳函数cumprod:累计积cumum:累计和cumtrapz:累计梯形数值积分delaunay:Delaunay三角化dearch:求最近点(这是两个有趣的函数factor:质数分解inpolygon:搜索多边形内的点ma某:最大元素mean:平均值median:数组的中间值min:最小值perm:向量所有排列组成矩阵polyarea:多边形的面积prime:生成质数列表prod:数组元素积ort:元素按升序排列ortrow:将行按升序排列td:标准差um:元素和trapz:梯形数值积分tearch:搜索Delaunay三角形var:方差voronoi:Voronoi图del2:Laplacian离散diff:差分和近似微分gradient:数值梯度corrcoef:相关系数cov:协方差矩阵某corr:互相关系数某cov:互协方差矩阵某corr2:二维互相关conv:卷积和多项式相乘conv2:二维卷积deconv:反卷积filter:滤波filter2:二维数字滤波傅立叶变换ab:绝对值和模angle:相角cpl某pair:按复共扼把复数分类fft:一维快速傅立叶变换fft2:二维快速傅立叶变换ffthit:将快速傅立叶变换的DC分量移到谱中央ifft:以为逆快速傅立叶变换ifft2:二维逆快速傅立叶变换ifftn:多维逆快速傅立叶变换iffthift:逆fft平移ne某tpow2:最相邻的2的幂unwrap:修正相角cro:向量叉积interect:集合交集imember:是否集合中元素etdiff:集合差集et某or:集合异或(不在交集中的元素union:两个集合的并unique:返回向量作为一个集合所有元素(去掉相同元素基本数学函数ab:绝对值aco:反余弦acoh:反双曲余弦函数acot:反余切acoth:反双曲线余切acc:反余割acch:反双曲线余割angle:相位角aec:反正割aech:反双曲线正割ain:反正弦ainh:反双曲线正弦atan:反正切atanh:反双曲线正切atan2:四象限反正切conj:求共扼co:余弦coh:双曲余弦cot:余切coth:双曲线余切cc:余割cch:双曲线余割e某p:指数fi某:向零舍入floor:向负无穷大舍入gcd:最大公约数imag:复数的虚部lcm:最小公倍数log:自然对数log2:以2为底的对数log10:以10为底的对数mod:模除nchooek:二项式系数nchooek(n,k=n!/{k!(n-k!}real:复数实部rem:余数round:四舍五入ec:正割ech:双曲线正割ign:符号函数in:正弦inh:双曲线正弦qrt:平方根tan:正切tanh:双曲线正切特殊函数airy:airy函数beelh:第三类贝塞尔函数;beelibeelk:改良型beelh函数beeljbeely:贝塞尔函数betabetaincbetaln:贝塔函数ellipj:雅克比椭圆函数ellipke:完全椭圆积分erferfcerfc某erfinv:误差函数e某pint:指数积分factorial:阶乘函数gammagammalngammainc:伽马函数legendre:勒让德函数pow2:2的幂次ratrat:有理逼近坐标变换cart2pol:笛卡儿坐标变换为极坐标或圆柱坐标cart2ph:笛卡儿坐标变换为球坐标pol2cart:极坐标变换为笛卡儿坐标ph2cart:球坐标变换为笛卡儿坐标矩阵和数组基础blkdiag:构造一个分块对角矩阵eye:创建单位矩阵flop:计算浮点操作次数,现已不再常用i:虚部单位inf:无穷大inputname:输入参数名j:虚部单位nan:非数值nargin:输入参数的数目nargout:输出参数的数目(用户定义函数pi:圆周率realma某:最大正浮点数realmin:最小正浮点数varargin,varargout:返回参数数目(matlab函数时间和日期calendar:返回日历clock:当前时间weekday:星期几矩阵操作cat:把矩阵按行或列连接起来diag:给定向量,构造对角矩阵fliplr:矩阵左右翻转flipud:矩阵上下翻转repmat:复制数组,repmat(A,m,n表示把A复制m行n列组成新数组rehape:按逐列来的方式重新整形数组rot:按逆时针方向旋转90度tril:返回一个矩阵的下三角矩阵triu:返回一个矩阵的上三角矩阵特殊函数矩阵gallery:测试矩阵,或者说大约50个矩阵模版hadamard:哈达马得矩阵hankel:汉克尔矩阵hilb:希尔波特矩阵invhilb:逆希尔波特矩阵magic:魔术方阵pacal:帕斯卡矩阵toeplitz:托普利茨矩阵wilkinon:维尔金森特征值测试矩阵算数运算符+:矩阵加-:减某:乘.某:数组乘^:矩阵乘方.^:数组乘方\\:矩阵左除/:矩阵右除.\\:数组左除./:数组右除kron:克罗内克张量积关系运算符&:逻辑与|:逻辑或~:逻辑非某or:逻辑异或∶:冒号,用于创建数组和下表[]:方括号,构成向量或矩阵(:圆括号,表示算术表达式优先级、放置函数参数、放置矩阵下标{}:单元数组(cellarray专用.:句点,小数点表示、数组运算符组成部分、字段(属性访问..:父目录,与cd一起使用...:连续三点,一行末尾表示续行,:逗号,格开参数;:分号,表示矩阵一行结束或者语句末尾使得执行结果不显示%:注释符':单引号,矩阵后表示转置或者成对出现括起字符串.':数组转置=:赋值逻辑函数all:向量中是否所有分量均非零any:是否有元素非零e某it:指定变量或文件是否存在find:返回矩阵中非零元素的索引和置i某:i系列,大部分根据名称可以知道功能icell(icelltr(iempty(:是否空数组iequal(:数组是否相等ifield(:是否结构数组中的字段ifinite(:数组中元素是否有限iglobal(:是否全局变量ihandle(:是否有效图形句柄ihold(:hold命令处于on状态与否iieee:是否使用IEEE算法iinf(:是否无穷大iletter(:数组元素是否是字母表中字母ilogical(:是否逻辑数组inan(:是否非数值数inumeric(:是否数值数组iobject(:是否对象iprime(:是否质数ireal(:是否实数ipace(:是否空字符ipare(:是否是按稀疏类别存储itruct(:是否结构类itudent:matlab版本是否学生版iuni某:是否uni某版本ia(:指定对象是否属于指定类logical(:把数值数组转变为逻辑数组A(B:A为数值数组,B为逻辑数组时,按B索引的非零元素返回A中相应位置元素milocked(:当前文件是否锁定仿真命令:im---仿真运行一个imulink模块ldebug---调试一个imulink模块imet---设置仿真参数imget---获取仿真参数线性化和整理命令:linmod---从连续时间系统中获取线性模型linmod2---也是获取线性模型,采用高级方法dinmod---从离散时间系统中获取线性模型trim---为一个仿真系统寻找稳定的状态参数构建模型命令:open_ytem--打开已有的模型cloe_ytem--关闭打开的模型或模块new_ytem--创建一个新的空模型窗口load_ytem--加载已有的模型并使模型不可见ave_ytem--保存一个打开的模型add_block--添加一个新的模块add_line--添加一条线(两个模块之间的连线)delete_block--删除一个模块delete_line--删除一根线find_ytem--查找一个模块hilite_ytem--使一个模块醒目显示replace_block--用一个新模块代替已有的模块et_param--为模型或模块设置参数get_param--获取模块或模型的参数add_param--为一个模型添加用户自定义的字符串参数delete_param--从一个模型中删除一个用户自定义的参数bdcloe--关闭一个imulink窗口bdroot--根层次下的模块名字gcb--获取当前模块的名字gcbh--获取当前模块的句柄gc--获取当前系统的名字getfullname--获取一个模块的完全路径名lupdate--将1.某的模块升级为3.某的模块addterm--为未连接的端口添加terminator模块booleanlhelp--将数值数组转化为布尔值--imulink挠没虻蓟蛘吣?榘镏nbp;封装命令:hamak--检查已有模块是否封装hamakdlg--检查已有模块是否有封装的对话框hamakicon--检查已有模块是否有封装的图标iconedit--使用ginput函数来设计模块图标makpopup--返回并改变封装模块的弹出菜单项movemak--重建内置封装模块为封装的子模块诊断命令:llatdiagnotic--上一次诊断信息llaterror--上一次错误信息llatwarning--上一次警告信息ldiagnotic--为一个模型获取模块的数目和编译状态硬拷贝和打印命令:frameedit--编辑打印画面print--将imulink系统打印成图片,或将图片保存为m文件printopt--打印机默认设置orient--设置纸张的方向helprtw看看,rtw相关的命令有三个命令:rtwgen-从一个模型中创建一个rtw文件(model.rtw,用此函数可以指定一些rtw的属性设置tlc-调用目标语言编译器rtwbuild-对一个模型调用rtw的build程序相关的命令好像还有make_rtw,rtw_c,tlc_c以上摘自:水木清华站。
Matlab课后实验题答案实验一 MATLAB运算基础1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
(1)0 122sin851ze =+(2)21ln( 2z x=+,其中2120.455i x+⎡⎤=⎢⎥-⎣⎦(3)0.30.330.3sin(0.3)ln, 3.0, 2.9,,2.9,3.0 22a ae e az a a--+=++=--(4)2242011122123t tz t tt t t⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t=0:0.5:2.52. 已知:1234413134787,2033657327A B --⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦求下列表达式的值:(1) A+6*B 和A-B+I (其中I 为单位矩阵) (2) A*B 和A.*B (3) A^3和A.^3 (4) A/B 及B\A(5) [A,B]和[A([1,3],:);B^2] 解:3. 设有矩阵A 和B123453166789101769,111213141502341617181920970212223242541311A B ⎡⎤⎡⎤⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥==-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦(1) 求它们的乘积C 。
(2) 将矩阵C 的右下角3×2子矩阵赋给D 。
(3) 查看MATLAB 工作空间的使用情况。
4. 完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
解:(1) 结果:(2). 建立一个字符串向量 例如:ch='ABC123d4e56Fg9';则要求结果是:实验二 MATLAB 矩阵分析与处理1. 设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A OS +⎡⎤=⎢⎥⎣⎦。
matlab-primes函数取模(mod)与取余(rem)的区别MATLAB有现成函数 primesSyntax:p = primes(n)Description:p = primes(n) returns a row vector of the prime numbers less than or equal to n. A prime number is one that has no factors other than 1 and itself.Examples:p = primes(37)The result isp = 2 3 5 7 11 13 17 19 23 29 31 37ind = find(X) 查询⾮零元素的位置,如果X是⼀个⾏向量,则返回⼀个⾏向量,否则,返回⼀个列向量。
如果X全是零元素或者是空数组,则返回⼀个空数组。
If A is a vector, prod(A) returns the product of the elements.If A is amatrix, prod(A) treats the columns of A as vectors, returning a row vector ofthe products of each columnthe product of 3 and 4 means 3*4, that is the answer 12.对于向量返回的是其所有元素的积;a=prod([1,2,3,4])a=24;对于矩阵返回的是按列向量的所有元素的积,然后组成⼀⾏向量;b=magic(3)b=8 1 63 5 74 9 2c=prod(b)c=96 45 84通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯⼀的区别在于:当x和y的正负号⼀样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的⼀样,⽽mod和y⼀样。
matlab中的m函数文件MATLAB中的M函数文件M函数文件是MATLAB中一种特殊的函数,用于在MATLAB环境中执行特定任务。
它们是用MATLAB语言写成的函数文件,它们不仅可以以M函数的形式进行编程,也可以以简单的命令行格式进行调用和使用,从而更快的实现某些功能。
有许多优点可以使用M函数文件,包括:1)M函数文件可以实现代码的重用,允许用户编写的代码可以在不同的应用场景中使用。
2)M函数文件可以显著减少编程时间,因为他们可以被独立地调用,从而降低编程复杂性。
3)M函数文件可以使用模块化的设计思想来实现代码的封装,从而使代码更易于维护和管理。
4)M函数文件可以使MATLAB代码更加高效,从而降低计算的复杂性。
M函数文件可以通过多种方式创建,包括编写源代码文件(*.m)、MATLAB函数文件和MATLAB工具箱中的函数编写器。
在将其编译成可执行文件(*.exe)之前,它们都被视为一种M函数文件。
对于一般用户来说,通过M函数文件可以更加容易地调用MATLAB 函数来实现相应的功能,并且可以实现特定任务的快速实现。
例如,用户可以利用其打印或计算的M函数文件来实现图像的快速处理,也可以利用其进行MATLAB编程任务的快速实现。
此外,MATLAB也提供了一些基本的M函数文件,以帮助用户进行更高效的编程和功能开发。
这些M函数文件包括:1)数学函数:用于计算数学表达式和数字的函数,如贝塞尔函数、Gaussian函数等。
2)图像处理函数:用于转换图像、进行图像增强和滤镜应用等操作的函数,如快速傅里叶变换(FFT)、核函数、形态学操作等。
3)统计函数:用于实现统计分析的函数,如线性回归、维度缩放分析(PCA)等。
4)信号处理函数:用于处理信号的函数,如卷积、变换和滤波器等。
5)系统函数:用于实现微机控制、系统计算和I/O操作的函数,如I2C、RS232等。
除了上述基本的M函数文件外,MATLAB还提供了多种更高级的M 函数文件,例如用于实现计算机视觉和图像处理的函数,用于实现机器学习和深度学习的函数,用于实现模拟及其他仿真应用的函数等。
实验一 MATLAB 运算基础1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。
(1) 0122sin851z e =+(2) 21ln(2z x =,其中2120.455i x +⎡⎤=⎢⎥-⎣⎦ (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+=++=--L (4) 2242011122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t =0:0.5:2.5 解:2. 已知:1234413134787,2033657327A B --⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦求下列表达式的值:(1) A+6*B 和A-B+I (其中I 为单位矩阵)(2) A*B 和A.*B(3) A^3和A.^3(4) A/B 及B\A(5) [A,B]和[A([1,3],:);B^2]解:运算结果:3. 设有矩阵A 和B1234530166789101769,111213141502341617181920970212223242541311A B ⎡⎤⎡⎤⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥==-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦(1) 求它们的乘积C。
(2) 将矩阵C的右下角3×2子矩阵赋给D。
(3) 查看MATLAB工作空间的使用情况。
解:. 运算结果:4. 完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
解:(1) 结果:(2). 建立一个字符串向量例如:ch='ABC123d4e56Fg9';则要求结果是:实验二 MATLAB 矩阵分析与处理1. 设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A O S +⎡⎤=⎢⎥⎣⎦。
matlab中m函数MATLAB是一种用于数值计算和数据可视化的高级编程语言和环境。
它具有强大的矩阵处理能力,被广泛应用于科学、工程、经济学、金融学等领域。
在MATLAB中,M文件是一种包含MATLAB语句的脚本文件,也被称为M函数。
M函数是MATLAB中最常用的方式之一,用于封装一段可重复调用的代码。
一个M函数由一系列MATLAB语句组成,并且可以具有输入参数和输出结果。
创建M函数的主要目的是提高代码的可重用性和可维护性。
创建M函数非常简单,只需使用MATLAB编辑器创建一个新的.m文件,并在其中编写代码即可。
M函数的文件名必须与函数名称相同。
例如,如果函数的名称是"myFunction",则M文件的文件名应为"myFunction.m"。
M函数的定义通常包含在文件的开头部分。
例如,下面是一个简单的M函数的例子:```function output = myFunction(input) % 这是一个简单的M函数例子output = input + 1;end```在这个例子中,我们定义了一个名为"myFunction"的M函数,它有一个输入参数"input"和一个输出结果"output"。
在函数体内部,我们对输入参数进行加一操作,并将结果赋给输出参数。
调用M函数非常简单。
只需在MATLAB命令窗口中输入函数名和相应的参数即可。
例如,我们可以这样调用上面定义的M函数:```result = myFunction(2);disp(result);```这段代码将输出结果"3",因为我们将输入参数"2"加一后得到了输出结果"3"。
除了输入参数和输出结果,M函数还可以具有局部变量。
局部变量只在函数体内部有效,并且在函数外部是不可见的。
这种封装性使得M函数更加模块化和可维护。
matlab 中m 文件里面的参数-概述说明以及解释1.引言1.1 概述概述部分:参数在Matlab中的M文件中起着重要的作用,它们是用来传递数值、变量或是一些特定的设置给函数或脚本的。
通过使用参数,我们可以为M 文件提供灵活性和可重用性,使得代码更加可配置和可扩展。
在M文件中,参数通常用来控制特定的行为或计算过程。
通过在函数或脚本定义时声明参数,并在调用函数或执行脚本时提供相应的数值或变量,我们可以根据实际需求来调整程序的行为。
参数的设置可以灵活地改变程序的输出结果,提高了代码的可定制性和适用性。
在本文中,我们将详细介绍M文件中参数的定义和使用方法。
我们将探讨参数的常见用法和技巧,包括参数的类型、默认值的设定以及参数的传递方式等。
此外,我们还将探讨一些参数的优化与应用,以帮助读者理解参数在M文件中的重要性和使用价值。
通过对M文件中参数的深入研究,我们能够更好地理解和使用Matlab的函数和脚本。
参数的合理设置不仅能够提高代码的执行效率和准确性,也能够使代码更易读、易维护和易扩展。
因此,理解参数在M文件中的作用和用法对于编写高效、优质的Matlab代码至关重要。
在下一节中,我们将详细介绍M文件及其作用,以帮助读者更好地理解参数在M文件中的使用环境和背景。
请继续阅读下一节内容。
文章结构部分的内容如下:1.2 文章结构本篇文章主要围绕着matlab 中m 文件中的参数展开讨论。
文章分为引言、正文和结论三个部分。
在引言部分,我们首先对文章的主题进行了概述,说明了本文将要讨论的问题和目的。
接着介绍了文章的结构,明确了各个部分的内容和顺序。
最后,对整篇文章进行了总结,给出了一个简要的概括。
在正文部分,我们详细讨论了matlab 中的M 文件及其作用。
我们解释了M 文件的含义和作用,介绍了其在matlab 编程中的重要性。
然后,我们重点关注了M 文件中的参数定义,解释了参数的概念和用途。
接着我们详细阐述了在M 文件中参数的使用方法,包括如何定义参数、如何传递参数以及如何在程序中使用参数。
matlabm文件定义函数MATLAB是一种非常强大的数学软件,它可以用来进行各种数学计算和数据分析。
在MATLAB中,我们可以使用m文件来定义函数,这些函数可以用来解决各种数学问题。
在本文中,我们将讨论如何使用MATLAB的m文件来定义函数。
让我们来看一下MATLAB中如何定义函数。
在MATLAB中,我们可以使用以下语法来定义函数:function [output1,output2,…,outputN] = functionName(input1,input2,…,inputM)其中,functionName是函数的名称,input1、input2等是函数的输入参数,output1、output2等是函数的输出参数。
在函数体中,我们可以使用这些输入参数来进行各种计算,并将结果存储在输出参数中。
例如,下面是一个简单的函数,它将两个数相加并返回结果:function [result] = addNumbers(a,b)result = a + b;end在这个函数中,我们定义了一个名为addNumbers的函数,它有两b相加,并将结果存储在result中。
最后,我们使用end语句来结束函数的定义。
现在,我们可以在MATLAB中调用这个函数,并传递两个数作为输入参数:>> addNumbers(2,3)ans =5在这个例子中,我们调用了addNumbers函数,并传递了两个数2和3作为输入参数。
函数返回了它们的和5,并将结果存储在ans 变量中。
除了简单的数学计算,我们还可以使用MATLAB的m文件来定义更复杂的函数。
例如,我们可以定义一个函数来解决线性方程组:function [x] = solveLinearEquations(A,b)x = A\b;end在这个函数中,我们定义了一个名为solveLinearEquations的函数,用MATLAB的\运算符来解决线性方程组,并将结果存储在x中。
1 Text函数的用法:用法 text(x,y,’string’)在图形中指定的位置(x,y)上显示字符串stringtext(x,y,z,'string')在三维图形空间中的指定位置(x,y,z)上显示字符串string2,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的数值型符号结果xsxs = vpa(x)在digits指定的精度下,给出x的数值型符号结果xsdigits用于规定运算精度,比如:digits(20);这个语句就规定了运算精度是20位有效数字.但并不是规定了就可以使用,因为实际编程中,我们可能有些运算需要控制精度,而有些不需要控制。
vpa就用于解决这个问题,凡是用需要控制精度的,我们都对运算表达式使用vpa函数。
例如: digits(5);a=vpa(sqrt(2));这样a的值就是1.4142,而不是准确的1。
4142135623730950488016887242097又如:digits(5);a=vpa(sqrt(2));b=sqrt(2);这样a的值是1.4142,b没有用vpa函数,所以b是1.4142135623730950488016887242097。
.。
6识别变量的指令:findsym(EXPR)确认表达式EXPR中所有自由符号变量findsym(EXPR,N)从表达式EXPR中确认出靠x最近的N个自由符号变量默认自由变量的顺序为:x y w z v。
Matlab如何调用其他m文件中的函数
我们若可以根据需要建立自己的函数文件,他们能够像库函数一样方便地调用,从而极大地扩展MATLAB地能力.
如果对于一类特殊地问题,建立起来许多函数M文件,就能最终形成独立地工具箱.
1.函数M文件地基本用法
function 因变量=函数名 (自变量)
其它各行为从自变量计算因变量地语句,并最终将结果赋予因变量.
这个M文件地文件名最好是函数名.m
function a = randint (m, n)
% RANDINT Randomly generated integral matrix
a = floor (10*rand(m,n))
当需要一个这样地2*3随机矩阵时,只需
>>x=randint(2,3)
x= 9 6 8
2 4 7
2.函数M文件有多个因变量
要用[]将他们括起来,请看下例:
function [mean, stdev] = stat(x)
% STAT Mean and standard deviation
[m n] = size(x);
if m =1
m=n
end
mean= sum(x)/m;
stdev=sqrt(sum(x^2)/m-mean^2)
其用途,如求一个数组X地平均值和均方差,只需:
>>x= [ 2 4 -7 0 5 -1];
[xm.xd]=stat(x)
xm=0. 5 xd=3.9476。
matlabm文件定义函数MATLAB是一种强大的数学软件,它可以用来解决各种数学问题。
MATLAB中的m文件是一种定义函数的方式,它可以让用户自定义函数,以便在程序中重复使用。
在本文中,我们将介绍如何定义MATLAB中的m文件函数。
首先,我们需要打开MATLAB软件,并创建一个新的m文件。
在MATLAB中,可以通过点击“文件”菜单中的“新建”选项来创建新的m文件。
创建好m文件后,我们需要定义函数的输入和输出参数。
例如,我们要定义一个函数,它可以计算两个数的和,那么我们需要定义两个输入参数和一个输出参数。
在MATLAB中,可以使用以下语法来定义函数的输入和输出参数:function [output] = function_name(input1, input2)其中,output表示函数的输出参数,function_name表示函数的名称,input1和input2表示函数的输入参数。
接下来,我们需要在函数体中编写代码来实现函数的功能。
例如,我们要实现计算两个数的和的功能,可以使用以下代码:output = input1 + input2;最后,我们需要保存m文件,并在MATLAB命令窗口中调用该函数。
在MATLAB中,可以使用以下语法来调用自定义函数:output = function_name(input1, input2);其中,output表示函数的输出参数,function_name表示函数的名称,input1和input2表示函数的输入参数。
总之,MATLAB中的m文件是一种定义函数的方式,它可以让用户自定义函数,以便在程序中重复使用。
要定义一个MATLAB中的m文件函数,我们需要打开MATLAB软件,并创建一个新的m文件。
然后,我们需要定义函数的输入和输出参数,并在函数体中编写代码来实现函数的功能。
最后,我们需要保存m文件,并在MATLAB命令窗口中调用该函数。
Matlab匿名函数匿名函数是MATLAB 7.0版提出的一种全新的函数描述形式,其基本格式为f=@(变量列表)函数内容,例如,f=@(x,y)sin(x.^2+y.^2)。
其效率似乎比inline更高。
更重要的,该函数允许直接使用MATLAB工作空间中的变量。
无需再将工作空间中的变量人微言轻附加参数在输入变量里表示出来,所以使得数学函数的定义更加方便。
例子:from simwe forum我们知道以字符串形式存在的函数表达式可以通过inline函数转化成内联函数。
现在的问题是,如何转化成更有效率的匿名函数?譬如a='(x+y)^2',我们可以通过f=inline(a),生成内联函数f(x,y)=(x+y)^2。
现在问题是如何由a,由代码生成@(x,y) (x+y)^2?a = '(x+y)^2';f = eval( sprintf('@(x,y) %s', a ));或f=eval(strcat('@(x,y)',a))或f=eval(['@(x,y)',a])匿名函数的效率似乎比内联函数更高,做如下测试:内联函数,大约5.4秒左右,匿名函数,大约3.4秒左右。
clear all;clc;syms x;t1=clock;r=0;for y=1:100a=x*log(x)*y+exp(x^3*y);% f=inline(a);f=eval(sprintf('@(x) %s',char(a)));r=r+f(2);end;t2=etime(clock,t1);在Matlab7.0以后的版本中,出现了一种新的函数类型–匿名函数,不但能够完成原来版本中内联函数(inline)的功能,还提供了其他更方便的功能。
Matlab首席科学家Moler教授都推荐用匿名函数替代原来的内联函数。
我最近学习了一些有关匿名函数的内容,现在总结一下:1,匿名函数的基本用法。
1.函数文件prime.m
function prime(a)
if size(a)~=1|round(a)~=a %判断输入的变量是否为一个整数标量
error('The input argument must be a interger number')
end
for i=2:sqrt(a) %判断a是否能被2到(a-1)之中的任一个数除尽
b=rem(a,i);
if b==0
disp(sprintf('%i is not a prime',a))
break;
end
end
if b~=0 %若循环完后,余数最终还不为零,则此数为素数
disp(sprintf('%i is a prime',a))
end
2.函数文件dele.m
function [remstr,charnum]=dele(a)
%只有ASCII码在32到126之间的整数所对应的符号才能被显示或打印出来,而且该程序只对标量或行、列向量进行操作
for i=1:length(a)
if a(i)<32 | a(i)>126| round(a(i))~=a(i) | any(ismember(size(a),1))==0
error('The input must be an interger array,whose element value is between 32 and 126');
end
end
b=[];
for i=1:length(a)
if a(i)~=32
b=[b,a(i)];
end
end
remstr=char(b);
charnum=length(b);
3.函数文件zeronum.m统计一个数值中的0的个数
function c=zeronum(a)
if size(a)~=1
error('The input argument must be a scalar')
end
b=num2str(a); %提问:为什么要这一步?
c=0;
for i=1:length(b)
if b(i)=='0' %先给不加引号,保存程序后,在命令行用zeronum(700)测试,
%结果为何错误
c=c+1;
end
end
脚本文件zn.m统计1到1999中0的总个数
zn=0;
for i=1:1999
zn=zn+zeronum(i);
end
disp(sprintf('1到1999中0的总个数为%i',zn))
4.函数文件equaroot.m
function equaroot(a,b,c)
%计算一元二次方程y=a*x^2+b*x+c的根,Y=EQUAROOT(A,B,C) det=b^2-4*a*c
if det>0
y(1)=(-b+sqrt(det))/2*a;
y(2)=(-b-sqrt(det))/2*a;
elseif det==0
y=-b/2*a;
else
y(1)=(-b+i*sqrt(det))/2*a;
y(2)=(-b-i*sqrt(det))/2*a;
end
disp('The roots of the equation are ')
disp(y)
5.函数segfun.m用于计算
function y=segfun(x)
if x>3 | x<-3
error('The input values is between -3 and 3')
end
if x>=-3 & x<-1
c=(-x.^2-4*x-3)/2;
elseif x>=-1 & x<1
c=-x.^2+1;
else
c=(-x.^2+4*x-3)/2;
end
y=c;
脚本文件plotsegfun.m用于画图
a1=[-3:0.01:-1];
plot(a1,segfun(a1),'r.-')
hold on
a2=[-1:0.01:1];
plot(a2,segfun(a2),'b-')
hold on
a3=[1:0.01:3];
plot(a3,segfun(a3),'go')
6.脚本文件menuch.m
ch=menu('请选择参数产生一个3阶方阵','[-10,10]之间均匀分布的随机阵','[-5,5]之间均匀分布的随机阵','[-1,1]之间均匀分布的随机阵','标准正态分布的随机阵')
switch ch
case 1
a= 10-2*10*rand(3)
case 2
a=5-2*5*rand(3)
case 3
a= 1-2*1*rand(3)
case 4
a=randn(3)
end
7.function mark
grade=input('note:成绩矩阵的每一行对应着一个学生的6门课成绩\n请输入成绩');
r=2;
while r==2
disp('您确定吗?')
r=menu('','yes','no','abort');
switch r
case 1
disp('确定'),break
case 2
disp('不确定'),grade=input('请重新输入成绩:')
case 3
return
end
end
[m,n]=size(grade); %m为学生人数
w=[2,3,2,4,2.5,1];
for i=1:m
grademean(i)=sum(w.*grade(i,:))/sum(w);
end
disp(sprintf('这%i位同学的加权平均成绩为',m))%如果不加disp,那结果将显示什么?
disp(grademean)
8.函数文件bonus.m
function y=bonus(I)
for i=1:length(I)
if I(i)>40
d(i)=(I(i)-40)*0.01+20*0.02+10*0.05+10*0.1;
elseif I(i)>20
d(i)=(I(i)-20)*0.02+10*0.05+10*0.1;
elseif I>10
d(i)=(I(i)-10)*0.05+10*0.1;
else d(i)=I(i)*0.1;
end
y(i)=d(i);
end
9.脚本文件fracsum.m
n=15;%定义了n以便以后修改
%为各项阵列与分配空间
deno=zeros(1,n);%demo为分母
numer=zeros(1,n);%numer为分子
frac=zeros(1,n);%frac为各项分数
sum=zeros(1,n);%sum为he
%定义各项初始值
deno(1)=1;
numer(1)=2;
frac(1)=numer(1)/deno(1);
sum(1)=frac(1);
%计算各项
for i=2:n
numer(i)=deno(i-1)+numer(i-1)
deno(i)=numer(i-1)
frac(i)=numer(i)/deno(i)
sum(i)=sum(i-1)+frac(i)
end
sum(n)
检验时,在命令行输入format rat,frac;
再通过format恢复默认格式。
10.计算出圈顺序shushu.m
function b=shushu(n,m)
a=ones(1,n);
b=zeros(1,n);
i=0;j=0;k=0;
flag=0;
while flag~=1
i=mod(i,n)+1;
j=j+a(i);
if j~=0 & mod(j,m)==0
k=k+1;
b(k)=i;
a(i)=0;
if k<n
j=0;
else
flag=1; end
end
end。