技巧
输入输出参数
nargin | nargout | varargin | varargout |
---|---|---|---|
函数输入参数数目 | 函数输出参数数目 | 可变长度输入参数列表 | 可变长度的输出参数列表 |
示例:
function varargout = Test(a, b, varargin)
if (nargin == 2)
fprintf('共有%d个输入参数.\n',nargin);
varargout{1} = a;
varargout{2} = b;
elseif (nargin == 3)
fprintf('共有%d个输入参数.\n',nargin);
varargout{1} = a;
varargout{2} = b;
varargout{3} = varargin{1};
end
end
[a, b, c] = Test(1,2,3)
共有3个输入参数.
a = 1
b = 2
c =3
常用的操作
矩阵的操作
-
扩展(复制矩阵)
repmat(A,2,1) : 将矩阵A垂直方向复制2次,水平方向复制1次(等于没有复制)
-
重构矩阵(改变矩阵的形状)
A = eye(3);A = reshape(A,[1,9]);
高斯分布
- 基础的函数
randn() : 产生均值为0,方差为1 的高斯分布
rand() :产生[0,1] 的均匀分布
-
产生10*10的矩阵,里面数服从均值是5,方差是D的高斯分布
A = 5+sqrt(D)*randn(10,10)
求和
- 普通求和
B = sum(A, dim) %将矩阵A按dim求和,返回的维度降低一维,默认1,按行求和, 输入n*n, 输出1*n
A = [1,2;3,4]
B = sum(A)
%B=[4,6]
- 累积求和(cumulative sum)
B = cumsum(A, dim) % 输出和A一样的维度
dim = 1 : 每个元素按行求和,求它以上的元素之后(default)
dim = 2 : 每个元素按列求和,求它以左的元素之后
如果A是向量或者数组,每个元素 = 求它以上或者以左的和
X =
0 1 2
3 4 5
>> cumsum(X,1)
ans =
0 1 2
3 5 7
K>> cumsum(X,2)
ans =
0 1 3
3 7 12
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A =
1
2
3
>> cumsum(A)
ans =
1
3
6
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A =
1 2 3
>> cumsum(A)
ans =
1 3 6