一、Matlab设置函数。
path:显示搜索路径所包含的所有内容
cd:current direction 查看当前路径
%:添加注释
userpath:显示默认的路径。
示例:userpath('D :\Program Files\MATLAB\R2008a\work');设置该目录为启动目录,参数为路径名;
savepath:保存相应修改
pathtool:界面工具修改相应的搜索路径
clc:命令界面清屏
二:数据操作
who:查看工作空间中的变量名
whos:详细显示工作空间变量名的相关信息
clear:清除工作空间中的所有变量,或者不加参数清除所有变量
save:保存工作空间中的所有变量保存到本地mat文件中。
使用方法:save [文件名][变量名][-append][-ascii]
使用实例(存储数据d):save myMatlab d-append
load:载入mat本地文件名,没有后缀
format:format+格式符,只影响存储,默认是short
三:数据类型
数值型数据
a = 1 ; 建立double类型的数据a。
b = uint8(a) ;将a转换为无符号8位整型
使用class查看当前数据的类型
double函数或者abs函数输出字符a的ASCII码
char函数将ASCII码转换成字符输出
str2num与num2str实现字符串与数值的互换
eval将字符串当成matlab的语句执行
结构体
定义一个结构体:
a.x = 1
a.y = 2
a.z = 3
isstruct判断是否是结构体,如果是返回1。
fieldnames显示结构体的所有成员。
isfiled(a,'x')检查是否是结构体的成员
rmfield删除结构体的成员
getfield获得结构体的成员
单元
使用{}括起建立
a={1,'string',[1,2,3,4]}
三:矩阵的基本操作
矩阵的建立
1)直接新建:
空格和逗号隔开的是同行向量,
A={1 2 3;4 5 6;7 8 9};
B={1 2 3;4 5 6;7 8 9};
C=A';
分号表示不是同行的向量。
2)文件创建:
edit命令新建m文件,运行的话直接输入文件名称即可。
3)特殊矩阵:
零矩阵:zeros(3,4)三行四列的零矩阵。
幺矩阵:ones(3,4)三行四列的幺矩阵。
>> ones(3,4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
4)冒号表达式建立向量
e1:e2:e3 初始值:步长:终止值
>> 1:2:7
ans =
1 3 5 7
5)linspace(a,b,n)
a:第一个元素。b:最后一个元素。n:总元素
可以与冒号表达式进行互换
>> linspace(1, 5, 3)
ans =
1 3 5
矩阵的简单操作
1)索引矩阵:使用下标进行索引。
A(2,3):先行标,后列标。
A(5):返回序列。matlab是用列存储,所以纵向计数。
[m,n]=find(A==8):两个参数则返回行号和列号
ind=find(A==8):一个参数则返回序号
size(A):返回矩阵的大小
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> size(A)
ans =
3 3
sub2ind(矩阵大小,行标,列表):将m,n这些下表转换成序号
[m,n]=ind2sub(矩阵大小,序号):将序号转换成下表
2)重排矩阵
H=reshape(矩阵A,行数9,列数1)重新排列
>> H=reshape(A,1,9)
H =
1 4 7 2 5 8 3 6 9
H=A(:);将A矩阵转化成列向量返回
3)矩阵的转置
加一个单引号,行变成列,列变成行。
4)矩阵的拆分
M = A(1,:)第一行的全部元素,冒号代表所有列
M = A(1,1:end)第一行的第一列到最后一列
M = A(1,[1 2 3])第一行的第一列第二列和第三列。
M = A(1,1:3)第一行的第一列第二列和第三列。
M = A([1,2],[1 2])第一行第二行的第一列和第二列。
5)删除矩阵
赋空值即可。
A(2)=[]:删除A矩阵中的第二个元素
A(1,:)=[]:删除A矩阵中的第一行元素
6)扩展矩阵
repmat(A,2,1)复制了两行一列
>> A
A =
1 2 3
4 5 6
7 8 9
>> repmat(A,2,3)
ans =
1 2 3 1 2 3 1 2 3
4 5 6 4 5 6 4 5 6
7 8 9 7 8 9 7 8 9
1 2 3 1 2 3 1 2 3
4 5 6 4 5 6 4 5 6
7 8 9 7 8 9 7 8 9
7)压缩矩阵
将相同元素删除从而实现矩阵压缩:unique(A)
四:特殊矩阵的建立
1)单位矩阵
eye(m,n):创建单位矩阵,一般行数等于列数,即m=n
>> eye(5,5)
ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
2)随机矩阵
rand产生0~1的随机矩阵,随机矩阵:S=rand(10,1):
>> S=rand(10,1)
S =
0.8147
0.9058
0.1270
0.9134
0.6324
0.0975
0.2785
0.5469
0.9575
0.9649
randn产生均值为0方差为1的随机矩阵,随机矩阵:S=randn(1,10):
>> S=randn(1,10)
S =
0.6715 -1.2075 0.7172 1.6302 0.4889 1.0347 0.7269 -0.3034 0.2939 -0.7873
生成从a到b均匀分布的随机向量可以使用:S = a +(b - a)*rand(m,n):
>> S = 5 + (7 - 4)*rand(5,1)
S =
5.9513
7.8507
5.1033
6.3162
6.1447
产生均值为u方差为s的正态分布的随机矩阵:S = u + sqrt(s)*randn(m,n):
>> S = 7 + sqrt(3)*randn(5,1)
S =
5.0132
5.1487
5.5979
1.9004
9.4913
可以使用mean和std求均值和方差。
3)魔方矩阵
使用magic(n)生成一个魔方矩阵:
>> magic(5)
ans =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
4)Hilbert矩阵
hilb(n)生成Hilbert矩阵:
>> hilb(5)
ans =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
>> format rat
>> ans
ans =
1 1/2 1/3 1/4 1/5
1/2 1/3 1/4 1/5 1/6
1/3 1/4 1/5 1/6 1/7
1/4 1/5 1/6 1/7 1/8
1/5 1/6 1/7 1/8 1/9
5)Toeplitz矩阵
>> toeplitz(1:6)
ans =
1 2 3 4 5 6
2 1 2 3 4 5
3 2 1 2 3 4
4 3 2 1 2 3
5 4 3 2 1 2
6 5 4 3 2 1
五:矩阵和向量的运算
%%矩阵向量的计算
A = [1 0 0 0;3 1 0 0;-5 2 1 0;7 3 2 1];
B = [1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7];
k = 3;
C = A + B;
D = k*A;
E = A';
det(E);%求行列式
inv(E);%求逆矩阵
先用det判断行列式,如果行列式不为0再用inv求其逆矩阵。
向量可以看做1*n矩阵或者n*1矩阵,因此向量的加法和数乘等运算和矩阵是一样的。
内积运算:
a = [1 + 5i, 2, 3 + 6i, 7 - 2i];
b = [2 - i, 4 + 3i, 3 - i, 6];
s = sum(conj(b).*a)
s = a*b' %求解ab内积
s = dot(b, a) %求解ab内积
六:线性方程组求解
%% 线性方程组的求解
A = [1, 2, 3; 1, 4, 9; 1 8 27];
b = [5, -2, 6]';
x = inv(A)*b %效率不高
x = A\b
七:矩阵的相似化简和分解
%% 矩阵的相似化简和分解
A = [0 3 3; -1 8 6; 2 -14 -10];
jordan(A)
[V J] = jordan(A)
A = [1 0 i; 0 2 0; -i 0 1];
eig(A)
[E D] = eig(A)
八:范数
%% 范数
A = [0 3 3; -1 8 6; 2 -14 -10];
norm(A, 1)
norm(A, 2)
norm(A, inf)
norm(A, 'fro')
九:矩阵分析
%% 矩阵分析
syms x
A = [sin(x) exp(x) 1; cos(x) x^2 + 1 log(x)];
diff(A)
diff(A, 2)
A = [0 1; 0 -2];
expA = funm(A, @exp)
expA = expm(A)
sinA = funm(A, @sin)
cosA = funm(A, @cos)