1 传值的方式 传址的方式区别
function f=ad(a,b)
f=a+b;
b=b+10;
命令行:
a=2;b=5;
f=ad(a,b)
f=
7
b
5
并没有改变b的值原来是5还是5
可见matlab属于传值方式,改变属于传址。
2 检查输入参数的个数
function c = testarg1(a,b)
if (nargin == 1)
c = a.^2;
elseif (nargin == 2)
c = a+b;
end
>> a=3;b=5;
>> c=testarg1(a)
c =
9
>> c=testarg1(a,b)
c =
8
3 传递参数--varargin
function testvar(varargin)
for k = 1:length(varargin)
x(k) = varargin{k}(1); %单元数组引
y(k) = varargin{k}(2);
end
xmin = min(0,min(x));
ymin = min(0,min(y));
axis([xmin fix(max(x))+3 ymin fix(max(y))+3])
plot(x,y)
命令行:
testvar([2,3],[1,5],[4,8],[6,3],[4,2],[2,3])
4 输出参数-nargout、varargout
function [varargout] =testvar2(arrayin)
for k = 1:nargout
varargout {k} = arrayin(k,:); %单元数组赋值
end
命令行
a=[1 2;3 4;5 6;7 8;9 10];
[p1,p2,p3,p4,p5]=testvar2(a)