MatLab笔记
发表于:2022-08-30 |
字数统计: 3k | 阅读时长: 11分钟 | 阅读量:
x=linspace(0,6);%createavectorxbetween0and6
y1=sin(2*x);
y2=sin(x.^2);
y3=(sin(x)).^2;
plot(x,y1)

matlab很强大,很强大。

退出和中断

exit、quit结束matlab会话,程序完成,如果没有明确的保存,则变量中的数据会丢失。

Ctrl+C中断一个matlab任务

在matlab中,矩阵是数据的基本格式。

二维矩阵是一个以行列排列的矩形表,例如一个m行、n列的矩阵大小就是mn,多维矩阵的维数大于2,就是说大小为mn*…p

当行列为1时,此时只有一个量,也就是标量,只有一个数。

一个变量可以通过分配一个值来定义他。

二维矩阵的实现

A=[1 2 3;4 5 6];

B=[1 2 3
4 5 6];

简单的两种方式,前者用分号作为一行的结束,后者直接写出来。

定义行向量与列向量

row_l=[1 2 3];
column_l=[1;2;3];

逐个元素的分配矩阵:

C(1,1)=1;
C(1,2)=2;
C(1,3)=3;
C(2,1)=4;
C(2,2)=5;
C(2,3)=6;
C

对于三维矩阵,一般的理解为在自变量中依次使用行、列和页维数次序,对于多维矩阵有两个索引原理,最自然的就是矩阵索引,他给出了每个元素在每一维的一个位置。

另外一个索引原理是线性索引,一些命令把整个索引说明为一个长列元素,如果所有元素都在一行上,那么对于各个元素给定的一个线性索引号说明了一个指定矩阵的索引给出的某个位置。

D=[1 2 3;4 5 6];
E=[1 2 3;4 5 6];
F(:,:,1)=A;
F(:,:,2)=B;
F
F(1,1,1)=10;
F

用两个二维矩阵构建一个三维矩阵,再修改一下三维矩阵内一个元素。

matlab允许在一行上定义多个变量,也可以在换行时使用三个点来在下一行继续输入。

m=1;n=2;z=0.1212121312;
A_1=[1 2 3 4 5 6 7;2 3 4 5 6 7 8;...
2 3 4 5 7 8 6];

为了获取变量的维数,可以使用size和length。

size(A_1)
length(A_1)

size,输出顺序为行数、列数、页数等。

(3,7)

length,给出一个向量的长度。行向量就给出列数,列向量就给出行数。

(7)

如果此时,简单的嵌套:

length(size(A_1))
ndims(A_1)

(2)

就能顺利的得到维数。当然使用ndims函数也能快速的得到维数。

sub2ind()特殊的函数,首先在matlab之中,数据有索引,即使是矩阵。

但是数据是按列的方式存储,所以是按照列来计算索引的。

sub2ind就是把下标转化为索引。

sub2ind(size(A_1),2,3)

如图,A_1是一个37的矩阵,那么这段语句的含义就是求一个37矩阵的第2行第3列的索引。

ind2sub()将线性索引转化为下标。

[i,j]=ind2sub(size(A_1),2);

也就是,求一个3*7矩阵索引为2的元素在第几行第几列。

多维矩阵的转换:

sub2ind([3 3 2],1,2,2)

将一个三行、三列、两页的矩阵的第一行、第二列、第二页的元素转化为索引:13。

变量

变量名可以有19个字符,由字母大小写、下划线和数字作为变量名,但只能由字母开头。

matlab是区分大小写的。在变量使用之前,不需要指定变量的数据类型,也不需要声明变量。

double是一个双精度浮点数,每个存储的双精度数用64位。

char用于存储字符,每个存储的字符用16位。

sparse用于存储稀疏矩阵,由一个sparse使用的内存是4+(非零元素数*16)。

unit8是一个无符号的8位整型数。数学函数并不对使用到的这种数据类型进行定义,如存储图像。

逻辑函数

iscell(x)如果x是一个细胞矩阵,返回1;否则为0。

isfield(x)如果x在一个结构中是一个域,返回1;否则为0。可参见第12.5节。

isfinite(x)返回一个与x相同大小的向量,这个x包含有限元的位置为1,其他位置为0。

islogical(x)如果x是一个逻辑向量,返回1;否则为0。

isnumeric(x)如果x是一个数值向量,返回1;否则为0。

isstr(x)如果x是一个字符串,返回1;否则为0。

isstruct(x)如果x是一个结构,返回1;否则为0。

isobject(x)如果x是一个对象,返回1;否则为0。

logical(x)返回一个可以使用的逻辑向量,例如逻辑索引或逻辑测试。

预定义变量

ans分配最新计算表达式的值,这个表达式并没有给定一个名字。

eps返回机器精度,定义1与最接近可代表的浮点数之间的差。eps数在一些命令中用作偏差。用户可以设定一个新的eps值,但要注意这个eps值不能由命令clear恢复。realmax返回计算机能处理的最大浮点数。

realmin返回计算机能处理的最小的非零浮点数。

pi返回p,即3.141592653589793,如果eps足够小,那么用16位十进制数来表示其精度。

inf定义为1/0。当出现被零除时,MATLAB就返回inf,并不中断执行而继续计算。NaN定义为“NotaNumber”,这个非数值要么是%类型,要么是inf/inf。

i,j定义为(-1)的1/2次方,虚数单位。可以为i和j分配其他值,它们将不再是预定义常数。可以由clear命令恢复。

nargin给出在一个函数调用中输入自变量的个数。

nargout给出在一个函数调用中输出自变量的个数。

变量列表

who列出已定义的变量。

Whoglobal与who相同,但仅列出全局变量。

whoa*给出所有以a开头的变量的一个列表。

whos给出比命令who更详细的列表,如显示矩阵的维数。

whosglobal与whos相同,但仅列出全局变量。

exist(namestr)根据在字符串namestr中的变量的定义,返回不同的值。这里要注意的重要的一点是变量名应在引号‘’之间给出。函数返回值的情况是:

1)表示namestr是一个变量名;2)表示namestr是一个M文件名;3)表示namestr是一个MEX文件名;4)表示namestr是一个编译的SIMULINK函数;5)表示namestr是一个预定义的MATLAB函数名。

inmem返回一个带字符串的细胞向量,这个字符串包含目前在内存中的函数、M文件。如果给出两个输出参数,则第二个包含了一个目前在内存中的MEX文件的列表。

workspace对由whos得到的信息给出一个图形界面。命令clear被集成在这个环境中。由helpworkspace给出的信息,也在UNIX下工作。

删除变量和合并

clear删除所有变量并恢复除eps外的所有预定义变量。当运行文件时的clear。

clearname仅删除变量name。

clearname1name2删除变量name1、name2、……

cleara*删除所有a开头的变量。

clearvalue根据value给出不同的结果。键入helpclear可得到更多的细节。

pack重组和压缩已分配的内存碎块。当MATLAB的内存满后,可以使用命令pack而不是清除任何变量来得到更多的空间。将会产生如下情况:•所有变量都会保存在磁盘上的一个临时文件pack.tmp中;•删除主内存中的内容;•所有变量将从pack.tmp加载到主内存中;•删除文件pack.tmp。

packfilename用文件filename作临时文件,重组和压缩已分配内存。

算数运算符扩展集

“^”幂

“*”乘
“/”右除(正常除)
“\”左除
“+”加
“-”减

优先级从上到下降低。

其中右除和左除表示的为分数,区别在于右除为分母在后,左除为分母在前。

数学函数

abs(x)求x的绝对值,即|x|。

sign(x)求x的符号,如果是正的得1;负的得-1;零得0。

sqrt(x)求x的平方根。

pow2(x,f)求x*2<sub>f</sub>。把f加到x的浮点格式下的指数上计算是一种十分有效的运算。

exp(x)求x的指数函数,即e<sub>x</sub>。log(x)求x的自然对数,即lnx。

log<sup>10</sup>(x)求x以10为底的对数,即log<sup>10</sup>x。

log<sup>2</sup>(x)求x以2为底的对数,即log<sup>2</sup>x。

sin(x)求正弦x,x为弧度。

cos(x)求余弦x,x为弧度。

tan(x)求正切x,x为弧度。

cot(x)求余切x,即1/(tanx),x为弧度。

asin(x)求反正弦,即sin<sub>-1</sub>x。

acos(x)求反余弦,即cos<sub>-1</sub>x。

atan(x)求反正切,即tan<sub>-1</sub>x。

atan2(x,y)求四象限反正切(x/y),其结果在[-pi,pi]区间内。

acot(x)求反余切x=四象限反正切(1/x)。

sec(x)求正割x,即1/(cosx)。

csc(x)求余割x,即1/(sinx)。

asec(x)求sec<sub>-1</sub>x=arccos(1/x)。acsc(x)求csc<sub>-1</sub>x=arcsin(1/x)。

sinh(x)求双曲正弦x。

cosh(x)求双曲余弦x。

tanh(x)求双曲正切x

coth(x)求双曲余切x,即1/(tanhx)。asinh(x)求sinh的反函数

acosh(x)求cosh的反函数

atanh(x)求tanhx的反函数

acoth(x)求cothx的反函数

sech(x)求双曲正割x,即1/(coshx)。csch(x)求双曲余割x,即1/(sinhx)。asech(x)求sechx的反函数

acsch(x)求cschx的反函数

取整命令和有关命令

round(x)求最接近x的整数。如果x是一个向量,则适用于所有元素。

fix(x)求0方向最接近x的整数。即负x向上四舍五入,正x向下四舍五入。

floor(x)求小于或等于x的最接近的整数。

ceil(x)求大于或等于x的最接近的整数。rem(x,y)求整除x/y的余数。

gcd(x,y)求整数x和y的最大公因子。[g,c,d]=gcd(x,y)求g,c,d,满足g=xc+yd。

lcm(x,y)求正整数x和y的最小公倍数,也能用于决定最小公因子。

[t,n]=rat(x)由有理数t/n求x的近似值,这里的t和n是整数,相对误差小于10-6。它给出了对应的字符串。[t,n]=rat(x,tol)与上相同,但相对误差小于tol。

rat(x)求x的连续的分数表达式。

rat(x,tol)求带相对误差tol的x的连续的分数表达式。

有关复数的函数

real(z)求z的实部。

imag(z)求z的虚部。

abs(z)求z的绝对值,即|z|。

conj(z)求z的复数共扼。

angle(z)求z的相角,即z=x+iy=rei中的。

unwrap(v)求与v相同长度的向量。这里,两个相邻元素间的相角差已经改变,因此,差最大为pi。

unwrap(v,k)求出如上的一个向量,但用转移偏差k代替pi。

cplxpair(v)给出一个v中各元素按实部递增排序,并使其复数组合成复数共扼对的一个向量。在一个共扼对中,负虚部在前,实元素排在向量的后部。如果v的一个元素在v中没有它自己的复数共扼,则显示一个错误信息。

坐标转换

特殊的数学函数

浮点运算计数器

时间和日期

上一篇:
概率论笔记
下一篇:
C++自学笔记(1)