首页 > 编程知识 正文

matlab分段函数代码,matlab求函数最大值及其位置

时间:2023-05-04 08:06:39 阅读:126743 作者:4581

Matlab变量的一个核心思想是,大多数情况下,数据是由矩阵存储的,因此输入往往被视为向量而不仅仅是数字。 包括寻找满足条件的数量时,我们通常用一个向量保存。 也就是说,虽然是数组,但表现方法略有不同。 然后将数据放入向量中,向量的长度也自然扩展。

Matlab的函数如果传递的是向量,则返回的通常是一个值;如果传递的是矩阵,则返回的通常是由满足条件的值组成的行向量。

今天的简单问题:写一个函数可以计算多个节点上下一个段函数的函数值:

简单绘制Matlab所需的知识:

a .函数的书写方法(包括输入参数输出、参数显示等)。 b .表示分段函数的三种方式(注意正题要求)。 c .选择分支的显示方法。

需要事先准备的是创建一个函数文件,并使用与主函数完全相同的名称。 不那样做就执行不了。

通过给出不介绍inline函数、稍后删除版本这两种解答,导出一般的函数表示:

functions=myfunction(x ) %主函数,建议创建函数文件而不是脚本文件

s=Zeros(size ) x ); %生成与x同类型的0向量

使用forI=1:length(x ) %循环体

s(I )=mycal ) s(I ); %x(I )引用第I个元素

结束

计算函数r=mycal (x ) %子函数、已知节点x和分段函数值

if x=-1

r=(x-1 ) ) 2; 不坐%分的理由是什么?

1个elseif x1

r=x^2;

else

r=(x1 ) ) 2;

结束

第二个:

(f=@(x ) ) (x=-1 ).* ) (x-1 ).^2) ) x.^2) ) x1).* ) ) x1) ) )

%匿名函数通常放在脚本文件或命令行窗口中。

让我们先从函数框架开始:

1 .语法function [输出参数列表]=函数名称[输入参数列表] (参数由逗号分隔) )。

例如,function [y,z]=myfunction(x ) %其中x是输入参数,y和z是输出参数(如果没有全局声明,则x、y和z是局部变量)。

注意:命名:保存参数名称的文件的命名必须与函数名称相同。 否则,将文件名作为函数名称调用。 函数名称不能与已存在的函数重复。 检查在doc中是否存在自己命名的函数。 在脚本文件中定义函数时(R2016b或更高版本中可用),脚本文件的函数名称不能相同;

子函数:函数文件可以包含多个函数。 除第一个函数以外的所有函数都称为子函数,子函数仅由同一函数文件中的函数调用。

关于关键字end :建议您随时在函数末尾加上end。

2 .语法2 )匿名函数,f=@ (参数列表) (函数表达式) ) ) ) ) ) ) ) ) ) 652 ) ) ) ) )

例如,f=@(x ) ) x^2) ) )

注意: APP应用方案:匿名函数通常是在脚本文件或命令行中创建的。 由于格式简单,因此可以轻松构建图形中的函数、复合函数和微积分计算

接下来,我们将使用一些基本函数。

3 .全零序列的建立: zeros

基本语法: Zeros(n )、zeros (size ) x )、Zeros(n,n ) Zeros(n ) %返回nn的全零矩阵

zeros(size ) x %返回一个与x大小相同的由零组成的数组

zeros(m(m,n ) %返回mn的完整零矩阵,可以指定零数据类型。 指定元素是32位无符号整数,例如zeros ) 1,3,' uint32 '。

4 .数组大小: size

基本语法: SZ=size(A(a )、szdim=size(A ) a,dim )、[m,n]=size(A ) size ) a ) ) %返回一个行向量,元素中包含a的对应维的长度例如,二维数组返回“行数、列数”。 这也意味着指定的维返回长度。

5 .选择、循环、分支等结构综述

语法: if条件1语句1 //elseif条件2语句2//else条件3语句3//end %elseif没有空格分隔。 有趣的是,error (引起错误并显示错误消息)的基本语法: error(msg ) % )例如error('erroroccurred ' ); 担心的门要启用转义字符,必须在error中指定多个参数,并且在错误消息中包含具有变量n的类的信息。 (因为没有引入基本变量类型,所以暂时忽略。 )通常用于if ~某种条件//error

for循环条件(如i=1:5)//循环体//end )不使用大括号,问有多少for和有多少end

while逻辑表达式//语句块//结束

switch开关表达式//case表达式1,//语句块1//case {表达式2,表达式3, },//语句块2//otherwise,//语句块//enene

继续,break

剩下的很

容易建立一个函数了。matlab有些地方其实给我的感觉怪怪的...感觉是功能太多反而容易混?不过可以随时doc查找,但自己还是得对基本的函数功能组合熟悉起来,否则用的时候会很难受。

以下再补充两个定义函数的东西:nargin、nargout,也是重点把握内容,有助于理解调用函数使用的规律。

函数输入参数数目:nargin、函数输出参数数目:nargout

共同说明:两者仅针对现在正在进行中的函数,该语法仅可在函数体内使用,返回函数调用中给定输入/输出参数数目

例子:

functionc =addme(a,b)switch nargin

case 2 %假如有两个输入,例如addme(1,2)

c = a + b;

case 1 %假如只有一个输入,例如addme(1)

c = a + a;

otherwise

c = 0;

end

end

function[dif,absdif] =subtract(y,x)dif = y-x;

if nargout > 1 %假如使用一个返回值,输出参量就只有dif,如果使用两个返回值久有absdif

disp('Calculating absolute value')%disp是显示其后内容的函数,后续在知识补全再说

absdif = abs(dif);%例如a=subtract(3,2)和[a,b]=subtract(3,2),使用参照max

end

end

如果nargin(函数名)的话返回值就是该函数可以接受的最大参数个数,同理nargout就是最大输出参量个数。

Matlab中还有一个函数piecewise可以直接创建分段函数:

命令:

syms y(x);

%这里可以用assume(x>0)来限制定义域的范围

y(x) = piecewise(x<0,1,x=0,2,x>0,3);

%接下来就可以愉快地调用piecewise了

%还可以用subs调整自变量的范围:pw=subs(pw,x

%可以借符号计算,diffpw=diff(pw,x);

参考

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。