matlab画图怎么把横纵坐标调换_Matlab极值问题求解

本文详细介绍了如何在Matlab中调换横纵坐标,以及如何利用子函数、匿名函数和函数句柄进行函数操作。此外,还探讨了多种求解一元和多元函数极值的方法,如黄金分割法、牛顿迭代法,并提供了具体的代码示例。同时,讲解了非线性方程组的Matlab求解和多元函数的最优化问题,如梯度下降法和牛顿法的应用。
摘要由CSDN通过智能技术生成

一、函数和子函数

一个M文件中,可能会有多个函数,其中第一个称为主函数,后面的所有函数称为子函数

  • 脚本文件中,也可以直接在脚本的最后添加子函数,在当前文件夹内,如果有同名函数,按照子函数MATLAB内建函数其他M文件主函数的顺序访问。子函数最后的end不能省略

  • 一个M文件的主函数通常和M文件名相同(否则MATLAB仍以文件名主名作为识别标准),一个M包含多个函数时,每个函数最后的end或者都省略掉,或者都不省略。

  • 所有的子函数都可以被M文件内的脚本或主函数调用,但无法被其他M文件或命令行直接调用。因此,子函数是一种减少M文件数量,封装外部脚本不直接调用的函数的好方法。

1. 子函数

编写一个内含子函数的M函数绘图文件

HC = Draw_d('circle');
HL = Draw_d('line');

function Hr = Draw_d(flag)
    % exm060301.m   Demo for handles of primary functions and subfunctions
    %        flag       %允许使用字符串’line’或’circle’     
    %   Hr     %返回子函数cirline的句柄 
    t = (0:50)/50*2*pi;    %0~2pi等分了50个区间
    x = sin(t);
    y = cos(t);
    Hr = @cirline;     %创建cirline的句柄(一种函数名的不同解读,类似于C++的指针)
    feval(Hr, flag, x, y, t);  %feval结合句柄调用,等价于cirline(flag,x,y,t)
end

function cirline(wd, x, y, t)
    %           wd         %主函数传递来的flag,可能为’line’或’circle’    
    %           t,x,y  %分别为绘图参数、横坐标与纵坐标    
    switch wd
        case 'line'
            plot(t, x, 'b', t, y, 'r', 'LineWidth', 2);
        case 'circle'
            plot(x, y, '-g', 'LineWidth', 8);
            axis square off;
        otherwise
            error('输入变量只能取“line”或“circle”!')
    end
    shg
end

HC的输出结果为:

dc6c58240f3dc0157e6d57bb90b489db.png

HL的输出结果为:

43b6f450fa1f00d0dac2c9186b9771fc.png

另外我们可以将t的采样距离缩小,比如绘制正五边形采样点分布:

t=0:2*pi/5:2*pi;x=cos(t);y=sin(t);
HH('circle',x,y,t)
%利用m文件主函数返回的句柄可以间接调用到子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值