Matlab学习1
Matlab
数据类型
- 数字
- 字符和字符串
- 矩阵
- 元胞数组
- 结构体
清空环境变量及命令
cls % 清除Command Windows中的所有命令
clear all % 清除Workspace*中的所有命令
变量命名
- 区分大小写
- 不超63位
- 字母开头,由下划线、字母和数字组成
- 见名知意
注释用 %
字符串
abs('a') % ASCII码
char(97)
num2str % number to string
length(str) % 字符串长度
矩阵
A = [1 2 3; 4 5 6; 7 8 9]
B = A' %转置矩阵
C = A(:) %将矩阵A中的每列合并成一个长的列向量
D = inv(A) %求逆
E = zeros(10, 5, 3)
E = zeros(size(A)) %生成零矩阵
E(:, :, 1) = rand(10, 5)
rand生成均匀分布的伪随机数,分布在0~1之间
rand(m, n)
rand(m, n, 'double') %指定精度,还可以为'single'
rand(RandStream, m, n)
randn生成标准正态分布的伪随机数(均值为0,方差为1)
语法同上
randi生成均匀分布的伪随机整数
randi(iMax) %在区间(0,iMax)
randi(iMax, m, n)
randi([iMin, iMax], m, n) %在开区间(iMin, iMax)生成m*n的随机矩阵
元胞数组
元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。通过将索引括在圆括号 ()
中可以引用元胞集。使用花括号 {}
进行索引来访问元胞的内容。
A = cell(1, 6)
A[2] = eye(3) %matlab是从1开始的
A{5} = magic(5) %magic 魔方,在matlab中生成n阶幻方(横竖斜三个方向的数字和总是相同的)
B = A{5}
结构体
books = struct('name', {{'Machine Learning', 'Data Mining'}}, 'price', [30, 40])
books.name % 属性
books.name(1) % cell
book.name{1} % string
矩阵操作
矩阵的定义和操作
A = [1 2 3 4 5 6]
B = 1:2:9
C = repmat(B, 3, 1) %把B重复3列1行
D = ones(2, 4) % 2行4列元素都为1
矩阵的四则运算
A = [1 2 3 4; 5 6 7 8]
B = [1 1 2 2; 2 2 1 1]
C = B + A % 加
D = A - B % 减
E = A * B' % 乘
F = A .* B % 点乘
G = A / B % G * B = A , G * B * pinv(B) = A * pinv(B) , G = A * pinv(B) ; pinv()求伪逆(广义逆)
H= A ./ B % 点除
% 左除和右除
A / B = A * inv(B)
A \\ B = inv(A) * B
矩阵的下标
A = magic(5)
B = A(2, 3)
C = A(2, :) % 第二行全部元素构成的矩阵
D = A(:, 4)
[m, n] = find(A > 20) % 找大于20的序号值/矩阵
逻辑与流程控制
if ... else ... end
for ... end
while ... end
switch ... case ... end
循环语句
例、求12 + 22 + 32 + 42 + 52 的和
sum = 0;
for n = 1:5
sum = sum + n^2;
end
sum = 0;
n = 1;
while n <= 10
sum = sum + n;
n = n + 1;
end
例、求1到5的阶乘的和
sum = 0;
for i = 1:5
p = 1;
for j = 1:i
p = p * j;
end
sum = sum + p;
end
分支语句
a = 10;
b = 20;
if a<b
'成立'
end
a = 10;
b = 20;
if a>b
'成立'
else
'不成立'
end