Bootstrap

matlab基础入门

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.15阶正态分布的随机矩阵: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)

在这里插入图片描述

在这里插入图片描述

;