matlab利用函数 编程求,MATLAB 函数编写方法与应用
试探结构:
MATLAB 从 5.2
版本开始提供了一种新的试探式语句结构,其一般的形式为:
try
语句段1
catch
语句段2
end
本语句结构首先试探性地执行语句段
1,如果在此段语句执行过程中出现错误,则将错误信息赋给保留的
lasterr 变量,并放弃这段语句,转而执行语句段 2
中的语句。这种新的语句结构是 C
等语言中所没有的。
MATLAB 函数编写方法与应用
所谓 MATLAB 程序,大致分为两类:M
脚本文件 (M-Script) 和 M 函数 (M-function),
它们均是普通的 ASCII 码构成的文件。M
脚本文件中包含一族由 MATLAB
语言所支持的语句,它类似于 DOS
下的批处理文件,它的执行方式很简单,用户只需在
MATLAB 的提示符 >> 下键入该 M
文件的文件名,这样 MATLAB 就会自动执行该 M
文件中的各条语句,并将结果直接返回到 MATLAB
的工作空间。M 函数格式是 MATLAB
程序设计的主流,一般情况下, 不建议您使用 M
脚本文件格式编程。
MATLAB 的 M 函数是由 function
语句引导的,其基本格式如下:
function [返回变量列表] = 函数名
(输入变量列表) 注释说明语句段, 由 % 引导 输入、返回变量格式的检测
函数体语句
这里输入和返回变量的实际个数分别由 nargin 和
nargout 两个 MATLAB
保留变量来给出,只要进入该函数,MATLAB
就将自动生成这两个变量,不论您是否直接使用这两个变量。返回变量如果多于
1
个,则应该用方括号将它们括起来,否则可以省去方括号。输入变量和返回变量之间用逗号来分割。注释语句段的每行语句都应该由百分号
%
引导,百分号后面的内容不执行,只起注释作用。用户采用
help
命令则可以显示出来注释语句段的内容。此外,正规的变量个数检测也是必要的。如果输入或返回变量格式不正确,则应该给出相应的提示。我们将通过下面的例子来演示函数编程的格式与方法。
〖例 3-〗假设我们想生成一个 nxm 阶的 Hilbert
矩阵, 它的第 i 行第 j 列的元素值为
1/(i+j-1)。我们想在编写的函数中实现下面几点:
如果只给出一个输入参数,则会自动生成一个方阵,即令
m=n
在函数中给出合适的帮助信息,包括基本功能、调用方式和参数说明
检测输入和返回变量的个数,如果有错误则给出错误信息
如果调用时不要求返回变量,则将显示结果矩阵。其实在编写程序时养成一个好的习惯,无论对程序设计者还是对程序的维护者、使用者都是大有裨益的。
采用 MATLAB
函数编写格式和上述要求,我们可以编写出一个函数
function A=myhilb(n, m)
%MYHILB a demonstrative M-function.
% A=MYHILB(N, M) generates an N by M Hilbert matrix A.
% A=MYHILB(N) generates an N by N square Hilbert matrix.
% MYHILB(N,M) displays ONLY the Hilbert matrix, but do not return
any
% matrix back to the calling function.
%
%See also: HILB.
% Designed by Professor Dingyu XUE, Northeastern University,
PRC
% 5 April, 1995, Last modified by DYX at 21 March, 2000
if nargout>1, error('Too many output arguments.');
end
if nargin==1, m=n;
elseif nargin==0 | nargin>2
error('Wrong number of iutput arguments.');
end
A1=zeros(n,m);
for i=1: n
for j=1:m
A1(i,j)=1/(i+j-1);
end, end
if nargout==1, A=A1; elseif nargout==0, disp(A1); end
这样规范编写的函数用 help
命令可以显示出其帮助信息:
>> help myhilb
MYHILB a demonstrative M-function.
A=MYHILB(N, M) generates an N by M Hilbert matrix A.
A=MYHILB(N) generates an N by N square Hilbert matrix.
MYHILB(N,M) displays ONLY the Hilbert matrix, but do not return
any
matrix back to the calling function.
See also: HILB.
有了函数之后,可以采用下面的各种方法来调用它,并产生出所需的结果。
>> A=myhilb(3,4)
A =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
>> A=myhilb(4)
A =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
>> myhilb(4)
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
MATLAB 工具箱编写技巧
放入一个目录中的为某种目的专门编写的一组 MATLAB
函数就可以组成一个工具箱。
从某种意义上说,任何一个 MATLAB
语言的使用者都可以是工具箱的作者。在一个工具箱中,应该有一个名为
Contents.m 的文件,用来描述工具箱中所有 MATLAB
函数的名称和意义。在该文件中第 1
行应该给出该工具箱的名称,在第 2
行中给出该工具箱的版本与修改时间等信息。然后分类地给出该工具箱中各类函数的最基本功能。注意,本文件中所有的语句都应该是注释语句,由百分号
% 引导,空行也应该由 % 引导。
另外,因为
MATLAB是一种解释性语言,所以即使在某个或某些函数中存在语法错误,但如果没执行到该语句时可能就不会发现该错误,这在一个成功的程序设计中是不能容许的。要查出某目录中所有的M函数语法错误,首先应该用
cd 命令 进入该目录,然后运行 pcode *
命令进行伪代码转换。因为该命令会将 MATLAB
函数转换成伪代码,而在转换过程中该程序将自动翻译每一条语句,所以一旦发现有语法错误,将会停止翻译,给出错误信息。改正了该语法错误后,再重新执行
pcode
命令,直到没有错误为止。至少这样会保证目录下所有的程序不含有语法错误。
matlab利用函数 编程求,MATLAB 函数编写方法与应用相关推荐
- Matlab使用符号对象求二元函数积分并做图
一.需求 需要做一个正态分布函数的概率密度图,打算使用符号对象syms做图. 二.使用方法 2.1 syms函数声明符号对象 syms 可以声明符号对象,以便求解方程的导数/积分的函数. 2.2 ...
- 《MATLAB专刊》——利用向量化编程提升MATLAB代码执行效率
文章目录 1. 实验说明 2. 实验结果 3. 源程序 3.1 绘图源程序 3.2 测试源程序 4. 参考资料 为了阐明采用向量化编程思路对于MATLAB双重 forforfor循环优化的效果,本文通 ...
- matlab接口与编程,精通MATLAB接口与编程
基本信息 书名:精通MATLAB接口与编程 定价:49.00元 作者: 出版社:电子工业出版社 出版日期:2007-01-00 ISBN:9787121036576 字数: 页码: 版次: 装帧: 开 ...
- 用Matlab比较三种求序列相关的方法
常规方法 用xcorr函数. 用filter函数 filter函数中,将分母设为1,则其结构就是乘累加,和相关一致.只不过这里要注意,求相关的时候,要将filter的系数b倒序. 用fft求序列相关 ...
- matlab fmincon函数格式,求matlab中fmincon函数格式的中文解释?谢谢!!
fmincon是Matlab优化工具箱(OptimizationToolbox)中的一个命令,用来求有限制条件(约束)的非线性目标函数的极小化问题.x=fmincon(fun,x0,A,b),用于求解 ...
- [Matlab科学计算] 共轭梯度法求一般函数的最小值
代码如下: function [x,val,k]=frcg %功能: 用FR共轭梯度法求解无约束问题: min f(x) %x0是初始点, fun, gfun分别是目标函数和梯度 %输出: x, va ...
- matlab randi 函数,急求MATLAB的randi函数源代码,我的7.1没有,谢谢谢谢
满意答案 cowboy823 2014.03.08 采纳率:57% 等级:12 已帮助:6451人 %RANDI Pseudorandom integers from a uniform dis ...
- matlab二元函数驻点,求matlab高手帮忙写个关于对二元函数积分的程序 - 程序语言 - 小木虫 - 学术 科研 互动社区...
clear, clc; %% build matrice m1=[0.8+0.1i,0.5i;0.3i,0.3+0.4i]; m2=[0.1+0.05i,0.2i; 0,0.4+0.9i]; S=[1 ...
- matlab利用经纬度计算距离,MATLAB函数可计算两个坐标(纬度和经度)之间的距离...
How can I calculate distance between two world map coordinates (latitude and longitude) using MATLAB ...
最新文章
- 美多商城之购物车(购物车管理1)
- 关于FluentNhibernate数据库连接配置,请教
- Lesson 11.1-11.5 梯度下降的两个关键问题反向传播的原理走出第一步:动量法开始迭代:batch和epochs在Fashion—MNIST数据集熵实现完整的神经网络
- git diff命令详解
- LabVIEW(七):多态VI
- c++判断字符是否为空格或数字
- seata 如何开启tcc事物_微服务分布式事务4种解决方案实战
- JDK1.8 IdentityHashMap
- 李佳琦公益助力乡村教育 为学生送上开学礼物
- 若依如何去掉“正在加载系统资源,请耐心等待”
- 从 Flash 到 WEBGPU,Web 图形技经历过的变革你了解吗?
- Normalize.css和Reset CSS有什么区别?
- 杭电 -- 2553 N皇后问题
- 【斐波那切数列】LeetCode 70. Climbing Stairs
- ava 8中的新功能特性
- 加密+拜占庭将军_简单读懂拜占庭容错
- SQLServer中替换某字段的部分内容
- 开箱:阿里技术人在读什么书?
- Ubuntu 10.10 下安装spoonwep-wpa工具
- 软件开发安全左移最佳工具-iast