02_matlab学习笔记之Structured_Programming&Function

1.流控制

在这里插入图片描述
pause的功能是:程序暂时执行。
其它绝大部分关键词与C语言的功能相同,不再赘述。

2.逻辑运算符

在这里插入图片描述

绝大部分功能与C语言相同,不再赘述。

3.关键词if/else、switch、while、for

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ii = 1;
s = 0;
while ii < 1000
    s = s + ii;
    ii = ii + 1;
end
% 结果为:s

在这里插入图片描述

4.预分配空间的变量 在这里插入图片描述

说明一:tic 和 toc用来记录matlab命令执行的时间。tic用来保存当前时间,而后使用toc来记录程序完成时间。显示时间单位: 秒。
说明二:代码A的执行时间为:4.726145 秒;代码B的执行时间为:0.036387 秒。可见预先为变量分配空间可节省大量时间。

在这里插入图片描述

A = [0 -1 4; 9 -14 25; -34 49 64];
B = A;
for ii = 1 : size(A, 1)  % A的行数
    for jj = 1 : size(A, 2) % A的列数
        if B(ii, jj) < 0
            B(ii, jj) = 0;
        end
    end
end
%结果为B

5.关键词break

在这里插入图片描述

6.编写脚本(script)的小技巧

在这里插入图片描述

7.脚本(script)与函数(function)的区别

在这里插入图片描述

8.matlab内部函数的内容

在这里插入图片描述
在命令行窗口输入:edit(which(‘mean.m’)) 即可浏览内部函数mean。
建议自定义函数套mean函数类似的格式。

关于函数的几点说明:

  1. 函数名与对应文件的文件名相同;
  2. 函数输入与函数输出都是可选的(换言之:可以没有输入或输出);
  3. 本地变量dimflag 不可访问;

具体的例子1:提供初始位移、初始速度和下落时间,计算自由落体的位移。
在这里插入图片描述
**具体例子2(多输入输出函数):**一个粒子在力的作用下做加速运动,该作用力表达式如下:
在这里插入图片描述说明一:v1、v2、t1、t2和m为函数输入,a和F为函数输出。

练习 :华氏摄氏度作为输入,摄氏度作为输出。将华氏摄氏度转换为摄氏度并打印,该函数一直运行直至不再为函数提供输入数据。
在这里插入图片描述
代码如下:

% 文件名为degree.m
function degree()
% input ff is degrees Fahrenheit 
% output cc is degrees Celsius

ff = input("请输入华氏摄氏度:");
while ~isempty(ff) % ff为空返回1
    cc = (ff - 32)./18;
    disp(num2str(cc));

    ff = input("请输入华氏摄氏度:");
end
end
% 在matlab命令行窗口输入degree,函数运行;按下enter,函数结束
% 附:强制终止matlab程序执行的操作:ctrl + C

9.函数默认变量

在这里插入图片描述

1.inputname
函数功能:返回函数指定输入参数的名称字符串,这个命令只能在函数内部使用。
inputname(argnum) :返回第argnum个输入参数的名称字符串。如果输入参数没有名称(例如它是一个表达式,而不是一个变量),这时会返回空字符串(’’)。

示例:先定义一个函数myfun.m

function c = myfun(a,b)
fprintf('First calling variable is "%s"\n.', inputname(1))

调用函数:

x = 5;  y = 3;  myfun(x,y)

输出:

First calling variable is "x".

但是这样调用函数:

myfun(pi+1, pi-1)

则输出:

First calling variable is "".

2.mfilename
函数功能:返回当前正在运行的函数所在文件的文件名。
语法格式:
mfilename
p = mfilename(‘fullpath’)
c = mfilename(‘class’)
示例:
新建一个myfun函数

function myfun(varargin)
for k = 1:nargin
    fprintf('input argument index: %s, input argument name: %s.\n', ...
    num2str(varargin{k}), inputname(k));
end
fprintf('current file name: %s.\n', mfilename);
end
%把这个函数保存为myfun.m

命令行窗口输入

a = 1; b = 2; c = 3;
myfun(a, b, c

输出

input argument index: 1, input argument name: a.
input argument index: 2, input argument name: b.
input argument index: 3, input argument name: c.
current file name: myfun.

3.nargin、nargout
函数功能:返回函数参数数量。在函数内部使用时,nargin 和 nargout分别表明有输入和输出参数数量。若在函数外部使用, nargin 和nargout对给定的函数,表明输入和输出参数数量。如果一个函数有可变数量的参数,参数数量为负值。
nargin:返回函数输入参数的数量。
nargin(fun):返回函数 fun输入参数数量。如果函数参数数量可变,nargin 返回一个负值。fun 可以是函数名或映射函数的函数句柄。
nargout:返回函数输出参数的数量。
nargout(fun):返回函数fun的输出参数数量。fun可以使函数名或映射函数的函数句柄。

示例1:在函数内部使用

function [x0, y0] = myplot(x, y, npts, angle, subdiv)
% MYPLOT  Plot a function.
% MYPLOT(x, y, npts, angle, subdiv)
%     The first two input arguments are
%     required; the other three have default values.
 ...
if nargin < 5, subdiv = 20; end
if nargin < 4, angle = 10; end
if nargin < 3, npts = 25; end
 ...
if nargout == 0
     plot(x, y)
else
     x0 = x;
     y0 = y;
end

示例2:在函数外部使用

nargin('sqrt') % return 1
nargout('sqrt') % return 1
nargin('ones') % return -1
nargout('ones') % return 1

4.varargin、varargout
varargin指的是变输入参数列表。varargin 是函数定义语句中的一个输入变量,允许函数接受任意数量的输入参数。使用小写字符指定 varargin,将其作为最后一个输入参数附加在任何显式声明的输入项后。在执行函数时,varargin 是一个 1×N 元胞数组,其中 N 是函数在显式声明的输入后收到的输入项数。但是,如果该函数在显式声明的输入后未收到任何输入,则 varargin 是空元胞数组。

示例1:
新建一个函数

function acceptVariableNumInputs(varargin)
    disp("Number of input arguments: " + nargin)
    celldisp(varargin)
end

使用多个输入调用该函数

acceptVariableNumInputs(ones(3),'some text',pi)

输出

Number of input arguments: 3
 
ans{1} =
 
     1     1     1
     1     1     1
     1     1     1
 
ans{2} =
 
some text
  
ans{3} =
 
    3.1416

varargout是可变长度的输出参数列表。varargout是函数定义语句中的一个输出变量,允许函数返回任意数量的输出参数。使用小写字符指定varargout,将其作为最后一个输出参数附加在任何显式声明的输出后。

示例1:在名为 variableNumInputAndOutput.m 的文件中定义一个函数,它接受可变数目的输入和输出。

function varargout = variableNumInputAndOutput(varargin)
    disp(['Number of provided inputs: ' num2str(length(varargin))])
    disp(['Number of requested outputs: ' num2str(nargout)])
    
    for k = 1:nargout
        varargout{k} = k;
    end
end

使用两个输入和三个输出调用该函数

[d,g,p] = variableNumInputAndOutput(6,'Nexus')

输出

Number of provided inputs: 2
Number of requested outputs: 3
d = 1
g = 2
p = 3

不使用任何输入和输出再次调用该函数

variableNumInputAndOutput

输出

Number of provided inputs: 0
Number of requested outputs: 0

10.匿名函数

写法模仿下图,不再赘述。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值