Week 02
- format compact 命令可以出去 answer 中无用的 horizontal line
format 有很多格式调整选择 - 我们可以将 command history 作为一栏拿出来,方便重输历史命令
- 通过 ... 我们可以将一个命令分行写
- plot()有option可以选,xlabel,ylabel,title,grid off
- axis([x-start,x-end,y-start,y-end])
bar(x,y,z) 条状图
figure 一个新的figure
pie([p1,p2,p3...]) 饼图
close(2) close figure 2
close all close all figures
Week 03
command | functionality |
---|---|
size() | 返回 行数和列数 |
1:3:10 | 从3到10以3递增的数 等同于 colon(1,3,10) |
如果开始数大于结尾数,就会导致 empty matrix 1行0列 | [] 是0行0列 |
x(row, col) | for indexing to retrieve or assign a value and when assigning, if x doesn't exist, a new matrix will be created |
x(2,[1,3]) / x(1:2:4) | subarray opeartions: return the value of x(2,1) and x(2,3) |
end | reserved keyword 能够表示matrix某一行/列的末尾 |
combing matrices | 连接端必须有相同的行/列 |
G=H' | Transpose of matrix |
.* ./ .\ | element-wise multiplication/ division/ division in reverse(Reciprocal) |
矩阵运算 | 加减乘除必须满足行列要求 但如果有一个是scalar 那就没有这个限制 |
Week 04 Function IO
Command | Functionality |
---|---|
x(:) | 将所有矩阵转变为一个 n*1 的向量 |
sum() | 计算矩阵每个列的和 |
function [a, b]=func(x, y) | 函数的标准格式 |
global var | 可以从 command line 以 global var 的形式访问全局变量 |
script | 使用 script 的时候,变量会进入workspace |
Week 05 Programmer's Toolbox
Command | Functionality |
---|---|
max() | 既可以返回每列最大数,还可以返回这个数的index |
zeros() ones() diag() randn() randi() eye() diag() | matrix building |
fix() | 取整 |
rng(n) rng('shuffle') | 设置生成随机数的种子 |
input() fprintf() | 输入输出 |
hold grid legend | 图表的设置 |
Week 06 Selection
Commands | Functionality |
---|---|
if ... elseif ... else ... end | 选择语句 |
~= | 不等于 |
& && | 前者会计算左右两式,会将array中每个成员分别计算;后者只有在左式不确定情况下计算右式,而且只适用于 scalar value |
nargin nargout | 输入/输出参数的个数 |
%comment | 如果在函数声明后面加注释,那么 help 命令就能像调用内置函数一样调用自定义函数 |
persistent | 类似于C++的 local static variable |
Robustness
function [table summa] = multable(n, m)
if nargin < 1
error('must have at least one input argument');
end
if nargin < 2
m = n;
elseif ~isscalar(m) || m < 1 || m ~= fix(m)
error('m needs to be a positive integer');
end
if ~isscalar(n) || n < 1 || n ~= fix(n)
error('n needs to be a positive integer');
end
table = (1:n)' * (1:m);
if nargout == 2
summa = sum(table(:));
end
Week 07 Loops
command | functionality |
---|---|
15+3i | 复数 |
v(logical(v)) | 返回不是0的element,这就是 logical indexing |
tick; func(), tok | 计时 |
preallocation | 提前创建满足要求的矩阵能有效减少计算时间 |
Week 08 Data Types
Command | Functionality |
---|---|
class() whos() | type / detailed info |
double char logical | data types |
isa() | type check |
intmax('uint32') intmin realmax realmin | range check |
iint8() uint32() | conversion |
在string中''表示一个quote | |
sprintf() fprintf | sprintf()需要一个output argument来接值 而 sprintf()不需要 |
struct field | 只需要名称一样 不需要类型一样 |
rmfield() | 不改变参数值,只返回改变值 |
cell | 使用{} |
cell() cell{} | 前者得到指针(cell) double有[]包住 string虽然是一样 但是不能用==进行比较 后者得到内容 |
cell pointers | 在matlab中,没有两个cell pointers能指向同一个object 所以在c++中我们可以通过传递指针改变函数外的值在matlab中行不通,因为我们不能在函数参数里面新建一个指针指向函数外的object,只能指向一个复制过后的object |
String Functions
Struct Functions
Cell Functions
Week 09
Command | Description |
---|---|
save + fileName + content in workspace | load fileName |
xslread() xslwrite() | |
~ | tilde可以用来作为必要但我们不需要的output argument |