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函数类似的格式。
关于函数的几点说明:
- 函数名与对应文件的文件名相同;
- 函数输入与函数输出都是可选的(换言之:可以没有输入或输出);
- 本地变量dim和flag 不可访问;
具体的例子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.匿名函数
写法模仿下图,不再赘述。