matlab基础入门
1.常用的命令:
注释:%
清除数据:clear
清除命令行窗口:clc
help func_name 查看函数用法以及文档
在命令行窗口输入一个变量或者一个公式,如果不在后面加";"就会执行显示。
内存变量的显示——who, whos(内容更详细)
内存变量的删除——clear, clear 变量名列表 (多个之间用空格隔开)
变量写入文件与导入matlab通过save和load命令:
save 文件名 [变量名列表]
load 文件名 [变量名列表]
2.MATLAB变量的数据类型
数值类型:整型,浮点型
字符类型
在矩阵中的变量若显示inf,说明该值为无穷大;若显示未NaN,则代表值缺失或者无意义。
3.矩阵变量
矩阵变量或者说矩阵计算是MATLAB的核心,MATLAB的矩阵变量可以动态的添加行或者列,并根据对
某个位置变量的赋值自动填充其他位置。
>>a= 2
a=
2
>>a(2,6)=1
a=
2 0 0 0 0 0
0 0 0 0 0 1
A(:,j)——第j列
A(i:i+m,:)——第i到i+m行
A(i:i+m,j:j+n)——i到i+m行j到j+n列交叉的部分
A(:)将矩阵的元素按列叠成一个列向量
4.字符串变量
1.eval(s) %s为字符串,表示将字符串的内容当作MATLAB语句来执行
>> A
A =
1 2 3
4 5 6
7 8 9
>> y='sin(A).*2+cos(A)'
y =
'sin(A).*2+cos(A)'
>> eval(y)
ans =
2.2232 1.4024 -0.7078
-2.1672 -1.6342 0.4013
2.0679 1.8332 -0.0869
2.strcat用于字符串的拼接,strcat(s1,s2)
3.字符串类型与其他类型的转换函数
int2str
num2str
mat2str
setstr——将ASCII码值转换为对应字符
str2num
>> a=str2num('ad')
>> mat2str(A)
ans =
'[1 2 3;4 5 6;7 8 9]'
>> str2num('[1,2]')
ans =
1 2
>> str2mat('2')
ans =
'2'
>> help str2mat
str2mat - (不推荐)基于字符串构建用空白进行填补的字符数组
此 MATLAB 函数 构成字符数组 S,其中包含字符数组 T1, T2, T3, ...
S = str2mat(T1, T2, T3, ...)
4.strcmp - 比较字符串
此 MATLAB 函数 比较 s1 和 s2,如果二者相同,则返回 1 (true),否则返回 0
(false)。如果文本的大小和内容相同,则它们将视为相等。返回结果 tf 的数据类型为 logical。
tf = strcmp(s1,s2)
>> strcmp('c','c')
ans =
logical
1
>> strcmp('a','c')
ans =
logical
0
>> strcmp('c','a')
ans =
logical
0
5.矩阵运算
算术运算+、-、*、/、\、%、^
注意: 这些算术运算是在矩阵意义下进行的,单个数据的算术运算只是一个特例
±运算规则:矩阵维数一致,对应元素±,否则出错,但是标量和矩阵可以进行运算,矩阵的每个元素和标量均进行±
乘运算规则:矩阵要可乘的,遵循矩阵乘法规则,矩阵和标量可乘,矩阵的每个元素均和标量相乘
/、\规则:B 除 A : A / B = A ∗ i n v ( B ) , A B = i n v ( A ) ∗ B B除A:A/B=A*inv(B),A\ B=inv(A)*BB除A:A/B=A∗inv(B),A B=inv(A)∗B,注意除数与被除数
标量可同时为除数与被除数,单独为除数,但不能单独为被除数
^规则:A ^x,要求A为方阵(标量为特例),x为标量点运算:
.* , .\, ./, .^
矩阵的点运算,如果矩阵维数一样,则对应元素进行运算
当有标量时,标量和矩阵的每个元素进行运算关系运算
<,>,=,~=,≤,≥
规则:
比较量为标量时,直接比较大小,成立返回1,否则返回0;
为同维度矩阵时,对应元素进行关系运算;
标量与矩阵则标量与矩阵的每个元素进行关系运算逻辑运算
&,|,~
(&&,||只用于标量)
运算规则同关系元素类似优先级(大体上):~单目运算符>算术运算符>关系运算符>逻辑运算符
6.MATLAB常用函数
sqrt
log——自然对数函数
log10——常用对数函数
log2——以2为底的对数函数
log_M(N)=log(M)/log(N)=log10(M)/log10(N)
exp
pow2
abs
rem,mod(模运算)
fix,round,ceil,floor(取整)
angle,real,imag,conj(复数共轭元素conjugate)
sign(符号函数)
gcd(最大公因子)
lcm(最小公倍数)
xor(异或)
find(返回非零元素的位置,给定两个接受变量得到下标索引,不给定或者给一个得到序号索引)
all 若向量的所有元素非零,则返回1(参数为矩阵的话,以列向量作为一个向量处理,返回结果是针对每列向量的一个横向量,可以指定维数转为行向量)
abs:可以求实数的绝对值,复数的模,字符串的ASCII
fix,round,ceil,floor:fix直接去掉小数部分,round四舍五入,ceil向上取整,floor向下取整
rem,mod区别在涉及负数时不一样
rem(x,y)=x-y.*fix(x./y)
mod=x-y.*floor(x./y)
size(A)——返回矩阵的行数和列数
length(A)——=max(size(A))
ndims(A)——给出A的维数
reshape(A,m,n)——在保持总元素个数不变的情况,对矩阵进行重排
>>help ndims
>>ndims - 数组维度数目
>> 此 MATLAB 函数 返回数组 A 的维数。维数总是大于等于 2。函数会忽略 size(A,dim) = 1 所针对的尾部单一维度。
>>N = ndims(A)
7.矩阵分析与处理
1.特殊矩阵
**a、通用的特殊矩阵:**zeros,ones,eye,rand(产生0~1间均匀分布的随机矩阵),randn(产生均值为0,方差为1的标准正态分布随机矩阵)
以上函数的调用格式相差无几,以zeros为例
zeros(m)——mxm矩阵
zeros(m,n)——mxn矩阵
zeros(size(A))——和矩阵A同大小的矩阵
建立随机矩阵:
[a,b]均匀分布的n阶随机矩阵: rand(n)*(b-a)+arand(n)∗(b−a)+a
均值为μ,方差为a^2的n阶正态分布矩阵
例子:
在[20,50]均匀分布的5阶随机矩阵: rand(5)*30+20
均值为0.6方差为0.1的5阶正态分布的随机矩阵:0.6+sqrt(0.1)*randn(5)0.6+sqrt(0.1)∗randn(5)
b、用于专门学科的特殊矩阵
1)魔方矩阵magic(n) ——n≥3
每行每列及对角线上的元素之和相等
2)范德蒙德矩阵
vander(V)生成以向量V为基础的范德蒙德矩阵
3)希尔比特矩阵
hilb(n)
矩阵元素:h_ij=1/(i+j-1)
希尔伯特矩阵是一个条件数很差的矩阵
4)帕斯卡矩阵pascal(n)
有杨辉三角组成的矩阵——副对角线元素为(x+y)^n的展开式的系数(最高次系数为向量第一分量)
5)多项式的伴随矩阵
compan(p)——p为多项式的系数()2.矩阵的结构变换
2.矩阵的结构变换
a、对角阵与三角阵
对角阵——除对角元素外的元素均为0,当对角元素相等时称为数量矩阵,特殊地,当对角线元素均为1时为单位矩阵
——提取矩阵对角线元素:
diag(A)提取主对角线元素,产生一个min(m,n)的列向量
diag(A,k)提取第k条对角线元素 ,k=0时为主对角线
——构造对角阵
diag(V)产生以V为主对角线元素的矩阵
diag(V,k)产生以V为第k条对角线的矩阵
三角阵——上三角(upper triangle),下三角(lower triangle)
triu(A) 提取A的上三角元素构成上三角矩阵
triu(A,k) 提取A的第k条及以上的元素构成上三角
tril(A),tril(A,k) 下三角
b、转置,旋转与翻转
1)转置
A’ ——当A为复数矩阵时A’既实现了转置也实现了共轭,A.'只实现转置
transpose(A) - 转置向量或矩阵,此 MATLAB 函数 返回 A 的非共轭转置,
2)旋转
rot90(A,k)将矩阵逆时针旋转90°的k倍,k=1时可省略k
3)翻转
左右——fliplr(A)
上下——flipud(A)
c、矩阵正交化
将A的列向量组正交化存入Q:Q=orth(A),则Q’Q=I
d、LU分解
[L,U]=lu(A) %L为下三角阵或其变换形式,U为上三角阵,LU=A
[L,U,P]=lu(A) %LU=PA
3.矩阵求值
1)矩阵求逆
A^(-1)——inv(A)
当A不是方阵或者A非满秩时,A不存在逆,但是若能找到与A的转置同型的矩阵B,满足ABA=A, BAB=B,则称B为A的伪逆,也称广义逆矩阵,求伪逆pinv(A)
注意:存在逆时,矩阵的逆与伪逆一般不相等
求逆的方式解线性方程组
Ax=b
x=A\b=inv(A)*b
2)行列式
方阵A的行列式|A|——det(A)
行列式|A|等于矩阵A的特征值之积
3)秩(奇异值)——rank(A)
4)迹—— trace(A)=矩阵的对角元素之和=矩阵的特征值之和(特征方程得)
5)特征值与特征向量eigenvalue ——eig(A)
eig(A),e=eig(A)——得到A的特征值构成的列向量 [P,E]=eig(A)——A的特征向量构成P的列向量,特征值构成对角阵E
[P,E]=eig(A,‘nobalance’)——上一个为先对A进行相似变换,这个没有进行相似变换直接求特征值与特征向量
6)向量和矩阵范数——用来度量向量在某种意义下的长度
a、向量的范数
2-范数——每个分量的平方和开方
1-范数——每个分量的绝对值之和
∞-范数——分量的绝对值取最大值
n=norm(A)——2-范数,欧几里得范数
n=norm(A,inf)——∞范数
n=norm(A,-inf)——求向量元素的绝对值最小值
n=norm(A,1)——1范数,向量元素的绝对值之和n=norm(A,p)——p范数,norm(A,2)=norm(A)
b、矩阵的范数
||A||=max ||Av||,||v||=1 这样定义的范数称为从属于向量的范数
||A||_1= 每列元素的绝对值之和中取最大值
||A||_∞=每行元素的绝对值之和中取最大值
||A||_2=sqrt(λ),λ为A’A的最大特征值
||A||_F=矩阵元素的平方和开方
norm(A)=norm(A,2)——2范数
norm(A,inf)——∞范数
norm(A,1)——1范数
norm(A,‘fro’)——F范数
7)矩阵的条件数
cond_p(A)=||A||_p·||A^(-1)||_p
条件数总是大于1的,越接近1则矩阵的性能越好,反之越差
性能Ax=b,系数矩阵A的个别元素的微小扰动会引起解的很大变化——A为病态矩阵,不会引起——良性矩阵.良性与病态是相对的,条件数就是用来刻画矩阵这种性能
cond(A)——求cond_2(A)
cond(A,p)——求cond_p(A)
8.程序控制结构
顺序结构
数据输入 x=input(提示信息)
数据的输出 disp
选择结构
if end
if else end
if elseif else end
try 语句组1
catch 语句组2
end
%当语句组1中出现问题则转去执行语句组2
循环结构
for i=1:1:10 语句 end
while 语句 end
函数创建和调用
function result=example1(Count)
for k=1:Count
result(k)=sin(k/50);
if result(k)<−0.9
result(k)=gammaln(k);
end
end
%调用:
>>example1(500)
9.符号计算
符号计算
在科学研究和工程应用中,除了大量的数值计算外,还有对符号对象进行的运算,即直接对抽象的符号对象进行计算,并将得到的结果以标准的符号形式来表示。符号计算可以获得比数值计算更一般的结果。
matlab提供了一种符号数据类型,相应的运算对象称为符号对象。在进行符号运算之前要先建立符号对象,然后才可以进行符号对象的运算。
符号对象的创建
——sym函数与syms命令
%建立符号变量与符号常量
%sym函数
>> x=sym('x') %定义符号变量
x =
x
>> k=sym('8') %定义符号常量
k =
8
>> x+k
ans =
x + 8
>> whos
Name Size Bytes Class Attributes
ans 1x1 8 sym
k 1x1 8 sym
x 1x1 8 sym
%syms命令——sym函数一次只能定义一个符号变量,使用syms命令一次可以定义多个符号变量,格式 syms a b c d...
>> syms x y z
>> whos
Name Size Bytes Class Attributes
x 1x1 8 sym
y 1x1 8 sym
z 1x1 8 sym
含有符号对象的表达式为符号表达式,符号对象的四则运算和数值运算一样。
符号表达式的化简
simplify(s) %s为符号表达式
符号对象的替换
y1=subs(y,x1) %用x1替换y中的默认变量
y1=subs(y,x,x1) %用x1替换y中的变量x
x是符号对象,x1可以是符号对象也可以是数值变量或表达式
>> syms x y
>> y=cos(x)
y =
cos(x)
>> syms z
>> y1=subs(y,z)
y1 =
cos(z)
>> y2=subs(y,x,2)
y2 =
cos(2)
>> plot(2,y2,'r*')
>> t=linspace(0,2*pi,100);
>> e=subs(y,t);
>> plot(t,e)