Matlab

1.输入输出参量可变的函数

实现方法1:

说明:nargin,nargout函数,建议里面用为else if省去许多end

1
2
3
clc;clear;close;
a=9;b=200;c=30;
[max,num]=maxium(a,b,c)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function [first,second]=maxium(a,b,c)
switch nargin
case 3 %相当于一个输入变量为3的函数
if a>b
max="a";num=a;
else
max="b";num=b;
end
if num<c
max="c";num=c;
end
case 2 %相当于一个输入变量为2的函数
if a>b
max="a";num=a;
else
max="b",num=b;
end
end
switch nargout
case 2
first=max; %相当于一个输出变量为2的函数
second=num;
case 1
first=num; %相当于一个输出变量为1的函数
end
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function [first,second]=maxium(a,b,c)
if nargin==3 %相当于一个输入变量为3的函数
if a>b
max="a";num=a;
else
max="b";num=b;
end
if num<c
max="c";num=c;
end
end
if nargin==2 %相当于一个输入变量为2的函数
if a>b
max="a";num=a;
else
max="b",num=b;
end
end
if nargout==2 %相当于一个输出变量为2的函数
first=max;
second=num;
end
if nargout==1 %相当于一个输出变量为1的函数
first=num;
end
end

实现方法2:

说明:使用varargin,varargout函数

1
2
3
clc;clear;close;
a=9;b=200;c=30;
[max,num]=maxium_1(a,b,c)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function varargout = maxium_1(varargin)
% varargin=[a,b,c];
% varargout=[max,num];
a=varargin{1};b=varargin{2};c=varargin{3};
%输入变量
if nargin==3 %相当于一个输入变量为3的函数
if a>b
max="a";num=a;
elseif a<b
max="b";num=b;
elseif num<c
max="c";num=c;
end
end
if nargin==2 %相当于一个输入变量为2的函数
if a>b
max="a";num=a;
elseif a<b
max="b",num=b;
end
end
%输出变量
if nargout==2
varargout{1}=max;
varargout{2}=num;
elseif nargout==1
varargout{1}=num;
end
end

2.元胞数组的应用

{} 和()的区别

说明:这里可以解释上面,因为varargin本身是个元胞数组,varargin用{}直接引用a,b,c里面的值(数据类型是数值型)

举例:

1
2
3
4
5
6
clc;clear;close;
data1_1={2,3,4;1,1,1};
data2_1={"a","b","c"};
data1 = {data1_1,"hello";data2_1,3};
data1(2);
[A,B,C]=data1{2}{1,:};