Matlab编程 入门(七)
来源:互联网 发布:股民开户数据 编辑:程序博客网 时间:2024/06/05 09:27
Matlab(七)
1.Matlab语言函数的基本结构
(1)Matlab的M-函数结构
function[返回变量列表] =函数名(输入变量列表)
注释说明语句段由%引导
输入返回变量格式的检测
函数体语句
问:用户输入k求出1+...m < k最小项m,最小项数和s返回
//函数
function[m,s] = findsum(k)
s = 0;m = 0;
while(s < k),m=m+1;s=s+m;end
Trial>> [m,s] = findsum(100000)
m =
447
s =
100128
问:编写一个函数,生成一个nXm阶Hilbert矩阵
它的第i行第j列的元素值为h(i,j) = 1/(i+j-1)
实现要求:
1.如果只传一个参数就自动生成一个方阵
2.在函数里给出恰当的注释和说明
3.检测输入和返回变量的个数,如果有错误就给出错误信息
//函数
function A = myhilb(n,m)
%myhilb(n,m)返回nxm阶Hilbert矩阵
%myhilb(n)返回nxn阶Hilbert方阵
if(nargout>1), error('too many output arguement args');end
if(nargin==1), m = n;
elseif nargin == 0 |nargin > 2
error('wrong number with input args');
end
for i = 1:n
for j = 1:m
A(i,j) = 1/(i+j-1);
end
end
//实现
Trial>> 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
(2)递归函数
问:求n!
function k = m_fact(n)
if nargin~= 1,error('输入变量个数错误');end
if nargout>1, error('输出错误');end
if abs(n-floor(n))>eps |n<0
error('输入变量应为非负整数');
end
if(n>1)
k = n*m_fact(n-1);
elseif any([0,1]==n)
k = 1;
end
(3)inline函数和匿名函数
为了描叙数学函数的方便,可直接用inline()函数编写,而不必须用Matlab文件编写
格式:
fun = inline (‘函数内容’,自变量列表)
用处:这样的结构不支持复杂的结构,函数大都为一条语句
例如:f(x,y) = sin(x^2+y^2)可以直接用
f = inline(‘sin(x^2+y^2)’,’x’,’y’)定义
Trial>> f = inline('sin(x^2+y^2)','x','y')
f =
内联函数:
f(x,y) = sin(x^2+y^2)
Trial>> f(2,3)
ans =
0.4202
(4)匿名函数
f = @(变量列表)函数内容
Trial>> f = @(x,y)sin(x.^2+y.^2)
f =
包含以下值的 function_handle:
@(x,y)sin(x.^2+y.^2)
Trial>> f(2,3)
ans =
0.4202
匿名函数可使用工作空间的变量
Trial>> a = 3;b = 4;
Trial>> f = @(x,y)(a*x^2+b*y^3)
f =
包含以下值的 function_handle:
@(x,y)(a*x^2+b*y^3)
Trial>> f(3,2)
ans =
59
- Matlab编程 入门(七)
- matlab编程入门
- matlab GUI编程入门
- MATLAB编程快速入门
- Matlab编程 入门(一)
- Matlab编程 入门(三)
- Matlab编程 入门(四)
- Matlab编程 入门(五)
- Matlab编程 入门(六)
- MATLAB GUI编程入门
- Matlab编程 入门(二)
- C#与Matlab混合编程_入门
- matlab编程入门学习(1)
- matlab编程入门学习(2)
- matlab编程入门学习(3)
- matlab编程入门学习(4)
- matlab编程入门学习(5)
- matlab编程入门学习(6)
- linux基础小知识(4)--运算符优先级
- Java NIO与IO的区别和比较
- linux下基于S3C2440的PWM蜂鸣器移植以及驱动程序分析
- JavaSE 学习参考:Map映射窗口
- .net
- Matlab编程 入门(七)
- Spring中AOP应用-入门篇
- Java中面向字符的输入流
- 动态规划——最长上升子序列
- 值类型和引用类型的转换(装箱和拆箱)
- [LeetCode]257. Binary Tree Paths
- 技术转型产品学习笔记——第二天
- 简易的登录界面
- C++远航之封装篇——深拷贝、浅拷贝