1. 概述
- 参看别人的文章和代码,对每一句代码进行分析,从而达到 matlab的 m函数入门,针对 matlab 的 m 函数小白。(注意 m函数名称和m文件一致 参见 matlab知识积累,同时需要知道希尔伯特矩阵)
2. 代码及其解析
function A = myhilb(n,m)
% This is help document.
% 自定义函数 myhilb,有两个参数 n m
% nargin 和 nargout 是两个获取函数参数数目的
%matlab函数,可以直接用 nargout/nargin来表示
%输出和输入的参数数目
% 针对错误调用格式: [A B] = myhilb(n,m)
if nargout > 1 % 如果输出参数的数目 > 1,输出错误信息
error('Too many output arguments.');
end % if...end
if nargin == 1 % 如果输入参数的个数为 1,将 n 的值赋给 m
m=n;
% 输入参数个数为 0 或者 输入参数个数大于 2
%输出错误信息,另外注意一下 | 与 || 的区别
% 针对错误调用格式: A = myhilb(n,m,j,k,...) 或者 myhilb()
elseif (nargin == 0) || (nargin > 2)
error('Wrong number of input arguments.');
end % if...end
A1 = zeros(n,m); % A1 矩阵赋值为 n 行 m 列的0矩阵(初始化)
for i = 1:n % i 从 1 每次加 1 ,直至 n
for j = 1:m % j 从 1 每次加 1 ,直至 m
A1(i,j) = 1 / (i+j-1); % 希尔伯特矩阵
end % 内层循环结束
end % 外层循环结束
if nargout == 1 % 如果输出参数个数为 1
% 那么 A1 赋值给 A 后显示 A,调用格式 X = myhiilb(n,m)
A = A1;
elseif nargout == 0 % 如果输出参数个数为 0
% 直接显示 A1,调用格式 myhiilb(n,m) 或 myhiilb(num)
disp(A1); % 那么直接显示 A1
end
3. 命令行窗口的尝试
- 尝试在命令行窗口输入一下代码,更能有效理解这个m函数
A = myhilb(3,2)
B = myhilb(3)
C = myhilb(3,2,3)
D = myhilb()
[E F] = myhilb(3,2)