Matlab学习笔记 Day2
注:仅供学习使用,部分内容来自学校课程课件或网络,理性探讨。
1.内存变量的显示与删除
(1)who:显示MATLAB工作空间中已经驻留的变量名清单。
(2)whos:给出变量名的同时,给出它们的大小、所占字节数和数据类型
(3)clear:删除MATLAB工作空间中的变量。但特殊变量不能被删除。
>>x = 1; y = 2;
>> who
Your variables are:
x y
>> whos
Name Size Bytes Class Attributes
x 1x1 8 double
y 1x1 8 double
>> clear
>>
2.工作空间浏览器:窗口用于显示所有MATLAB工作空间中的变量名、数据结构、类型、大小和字节数,也可以对变量进行观察、编辑、提取和保存。
个人体会:
①工作窗可以快速看到变量和结果,如果做了clear操作,内容就会消失,这个工作窗口和Codeblocks调试过程中的Watches调试窗类似,可以快速看到变量的初始化等过程。
②当直接在命令窗口右键进行清空时,由工作窗口显示变量不会消失,但是使用clear之后,变量会被彻底清空,因此,如果要重新开始一个新的命令而不使用以前的定义,需要进行clear操作而非“清空命令窗口”。
3.内存变量文件:利用MAT文件可以叭MATLAB工作空间中的一些有用的变量长久的保留下来。MAT文件的生成和调入由save和load完成。
(1)save 文件名 [ 变量名表 ] [ -append ] [ -ASCII ]
意为把工作空间中的变量保存到MAT文件中。-append表示添加方式。-ASCII表示数据格式为ASCII码形式,默认为二进制。
例如: save my data2 a -append
(2)load 文件名 [ 变量名表 ] [ -ASCII ]
将MAT文件中保存的变量加载到MATLAB工作空间。参数含义与save相同。
4.向量与矩阵的创建
(1)矩阵的创建:将矩阵元素用方括号括起来,按矩阵行的顺序输入各个元素,**同一行元素用逗号或空格隔开,行与行之间用分号或回车键隔开。**元素可以是数值或者是表达式元素,表达式可由数字、变量、运算符和函数等组成。代码块中,A是3x3的矩阵,z和m分别代表了数组元素可以是复数,也可以是表达式。
>> A=[1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
>> z=[1+2i,2+3i;2-1i,3-2i]
z =
1.0000 + 2.0000i 2.0000 + 3.0000i
2.0000 - 1.0000i 3.0000 - 2.0000i
>> m=[-1.3,1+2+3,sqrt(5)]
m =
-1.3000 6.0000 2.2361
(2)等间隔行向量的创建:
①冒号表达式: x1:dx:x2 或 x1:x2
含义:初值x1,增量dx和终值x2分别表示开始值、步长和结束值。增量可为赋值,省略时则默认增量为1。当增量省略或增量大于0而初值大于终值时,为空向量;当增量小于0而初值小于终值时也为空向量。
②使用linspace:linspace(a,b,n)
含义:生成从a到b之间等线分的n个元素的行向量(n的默认中为100)
(3)特殊矩阵的创建:
①函数库elmat:
zeros(n) 产生nxn零矩阵
zeros(m,n) 产生mxn零矩阵
zeros(size(A)) 产生于矩阵A同样大小的零矩阵
eye()函数为产生主对角线为1的矩阵
ones()函数为产生元素全为1的矩阵
②函数rand用于产生[0,1]之间均匀分布的随机数;randn用于产生服从标准正态分布的随机数(均值为0,标准差为1)
>> r1=rand %产生一个范围在[0,1]的随机数
r1 =
0.8491
>> r2=rand(2) %产生一个2x2矩阵,其元素在[0,1]范围内
r2 =
0.9340 0.7577
0.6787 0.7431
>> r3=rand(2,4) %产生一个2x4矩阵,其元素在[0,1]范围内
r3 =
0.3922 0.1712 0.0318 0.0462
0.6555 0.7060 0.2769 0.0971
>> r=round(rand*9+1) %产生1-10之间均匀分布的整数
r =
8
③diag函数
x = diag(n):以n为向量,则产生以n中元素为主对角线元素的对角矩阵;若以n为矩阵,则提取n的主对角线元素。
x = diag(n,m):以n为向量,产生第m条对角线上的元素为v中元素的对角矩阵;若v为矩阵,则提取的第k条对角线上的元素。
diag函数还可以得到复杂矩阵比如diag(m)+diag(n,1)等
例:diag函数的使用
>> n=[2,-10,8]
n =
2 -10 8
>> A=diag(n)
A =
2 0 0
0 -10 0
0 0 8
>> A1=diag(n,1)
A1 =
0 2 0 0
0 0 -10 0
0 0 0 8
0 0 0 0
>> A2=diag(n,-1)
A2 =
0 0 0 0
2 0 0 0
0 -10 0 0
0 0 8 0
>> x=rand(3)
x =
0.7572 0.5678 0.5308
0.7537 0.0759 0.7792
0.3804 0.0540 0.9340
>> d=diag(x)
d =
0.7572
0.0759
0.9340
>> d1=diag(x,1)
d1 =
0.5678
0.7792
>> d2=diag(x,-1)
d2 =
0.7537
0.0540
④其他函数
blkdiag(A1,A2…An):生成分块对角矩阵
A=triu(x):矩阵x主对角线及以上元素的上三角矩阵
A=triu(x,k):矩阵x第k条对角线及以上的上三角矩阵
tril()函数为下三角矩阵,用法同triu
magic():生成魔方矩阵(幻方)
还有一些用于生成专门学科的特殊矩阵函数,例如线性代数中提及的范德蒙德矩阵(vander)等。
DAY2学习体会:MATLAB中有很多函数库,这一点非常类似于Python,这些函数可以不用调用而直接使用(省去了import或#include的过程)。这让MATLAB的操作更加容易上手,对于命令窗口,通过是否加分号可以控制是否输出中间变量。而对于脚本,写完的脚本经过保存为.m文件,可以直接调用,都十分方便。