matlab软件基础

第1讲  MATLAB初步

MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB和MathematicaMaple并称为三大数学软件。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解决问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。

1 Matlab函数一般调用格式:功能命令(操作对象,操作选项)。

功能命令是MATLAB软件的产品,指的是需要完成的任务所对应的函数。

操作对象一般为数值、函数、普通方程、微分方程、矩阵表达式等;

操作选项,也称为指定格式,一般为操作对象的控制选项。

(操作对象,选项)就是功能命令的语法。不同的函数,语法要求不一样,这是学习Matlab的重点和难点。学习下面例子,初步掌握Matlab函数使用特点。

1)一元函数绘图:syms x;fplot(x.*sin(x),[-pi,pi])

练习:

2)不定积分:syms x;int(x)

    练习:

3)求定积分:syms x;int(sym(x^2*sin(x)),0,1)

练习:

;    

2 Matlab常见的编辑

2.1 删除

clc:删除Command窗口里内容;

clear:删除当前目录里所有变量;

clear+变量:删除Command窗口里指定变量;

clearvars -except x y:清空指定变量之外的变量(只保留指定变量x,y.注意:except前有 ‘-’);

clf:删除所有图形;

clf(1):删除第一幅图;

close all:关闭所有画图figure窗口;

2.2 切换路径

先建立一个文件夹,把本次操作的内容全部放在指定硬盘的某个文件夹里。右击文件夹的属性,复制位置中的路径,形如下图。

切换方式1:cd E:\张三matlab

切换方式2: cd(' E:\张三matlab ')

更改默认路径:右击左面matlab属性,更改起始位置即可。如图所示。

练习:1)切换路径到D盘文件夹“Matlab学习”

      2)切换路径到E盘文件夹“强大的Matlab”

2.3 Matlab换行

形式1:shift+enter换行,只能一个或若干个执行语句一行。若执行语句过长,不方便错误检查,这是需要换行。MATLAB软件不能自动换行。

形式2:使用…,可任意位置换行,形如

>> x=0:0.1:2*pi; ...

y=sin(x);plot(x,y)

2.4 语句运行

(1)若运行Command窗口里语句,直接回车表示运行;

(2)若运行m文件窗口语句,按“run”或F5

(3)若运行m文件窗口选中的语句,按F9。

2.5 其它编辑

各窗口的字体调整:File,Preference,fonts,custom,font to use

出现OVR被激活:按Insert消除

中止程序运行:Ctrl+C或Ctrl+Break

程序语句后面添加说明部分:%后面跟说明语句

退出Command窗口里的输入,按Esc键或回车键。

查看函数程序:Edit+函数

数值解的显示:如vpa(pi,10)  显示变量的精度

关闭科学计数法:format short g   format long g

exit:退出matlab

sym(f(x)):给出f(x)的符号表达式,>> sym(0.3/0.8)  ans =3/8

3 函数表达式

3.1 基本初等函数

幂函数:x^a,

指数函数:

,a^x

对数函数:lnx=log(x),lgx=log10(x),

 

三角函数:sin(x),cos(x),tan(x),cot(x),sec(x),csc(x)

反三角函数:直接在对数函数前家a,形如asin(x)

特殊函数:

,sign(x)

随堂练习:计算下列函数值

3.2 符号函数表达式

◆注意:先syms定义,后使用

syms x y  %定义为符号x y变量,通过whos可以看出变量类型

whos f(x,y)  %定义x y为符号变量,定义f为符号函数

1) syms f(x);   f(x)=x*sin(x);  a=f([1  2  3])

a =[ sin(1), 2*sin(2), 3*sin(3)]

2) syms f(x,y);  f(x,y)=x^y*sin(x);  f(x,2)

ans =x^2*sin(x)     f(2,3)=8*sin(2)

3) syms f(x,y);  f(x,y)=x^y*sin(x);fplot(f(x,2),[-pi,pi])

4) syms f(x,y);  f(x,y)=x^y*sin(x);diff(f(x,y),x)

ans =x^y*cos(x) + x^(y - 1)*y*sin(x)

5) syms f(x,y);  f(x,y)=x^y*sin(x);  int(f(x,y),y)

ans =(x^y*sin(x))/log(x)

3.3 匿名函数表达式

匿名函数格式:f=@(x)f(x)

其中@(x)是匿名函数格式,x表示函数自变量。

应用:高频调用函数,复杂的复合函数书写,采用匿名函数非常方便。

缺陷:匿名函数是局部,只能在局部调用,自编函数体内不能调用它。

注意:分段函数最好用匿名函数表达式,切记!

的匿名函数:y=@(x)sin(exp(x)+x^2)

常见调用格式:①y(1.2)=0.9999

②diff(y(x))= cos(exp(x) + x^2)*(2*x + exp(x))

③a=int(y(x),1,2);vpa(a,5)=-0.21258

随堂练习:编写下列函数的匿名函数,并计算对应问题。

2)

,求

对应的函数值

    求

3)

,一次性求

的函数值。

   画图

3.4 自编函数

    以

为例。自编函数只能在M文件窗口里编写。

function f=zz(x);

f=sin(log(exp(x)+x^2));

其中(1)function是函数文件的标志,必须有。

(2)zz是函数名,如同正弦函数名sin一样。取名规则为:函数名与文件名同名;函数名不能与已知变量、已知函数名同名,函数名首字必须为字母,其后可以跟字母、数字、下划线。

(3)f是传递变量,最终的函数表达式必须形如上述形式传递给f才能有效。f不是固定变量,可根据自己偏好选择。

(4)自编函数在绝大多数场合下可以被调用,如匿名函数里,其它自编函数里等。

随堂练习:编写下列函数的m文件,并做相应计算

1)

,一次性求

的函数值。

   画图

.

2)

,求

对应的函数值,求

3)数据函数data(k),k=1表示数据1,…;

第2讲  数组及其运算

1 数组生成

模式1:直接输入,如

模式2:

,若

,可省略

模式3:X=linspace(first,last,n)

模式4:从txt,excel里直接复制

模式5:函数生成,如zeros,ones,rand,randn,eye,normrnd等。

随堂练习1

1)直接输入数组

2)在区间[0,1]上用linspace生成20个元素的数组。

3)在

上增量为0.15生成数组

4)从word、txt、Excel里复制数据生成数组。

5)利用zeros,ones,rand,randn,eye,normrnd生成数组。

6)生成数组1,2,3,…,100;生成数组2,4,6,…,100

2 数组的拆、并、调等运算

设生成数组

,则x不仅表示数组名,还表示变量名函数,即下标函数。因为变量名函数的作用,对数组操作非常方便。可以认为,Matlab软件的灵活性,完全体现在变量名函数使用的灵活性。常见的数组操作有

(1)提取x中的部分元素:如

(2)删除x中的部分元素:如

 

(3)替换x中的部分元素:如

 

(4)拆分x:如

(5)合并两数组a,b:c=[a,b],其中a,b为一行数组

(6)插入新元素:如

(7)翻转x:fliplr(x)

,或x(n:-1:1)

随堂练习2

1)生成数组a =[ 8.1, 9.1, 1.3, 9.1, 6.3, 0.98, 2.8, 5.5] 

b =[ 3.6, 2.8, -1.3, 3.0, 0.73]

2)删除

的第3、7位置元素得数组A2。

3)替换

的第1,3,7位置元素为1,3,7,得数组A3。

4)把

的第2、4、9位置元素提取为新的数组A4。

5)把

的第3、7位置元素与

合并为一个新的数组A5。

6)在

的第3、4位置元素之间插入元素-15,得新的数组A6。

7)在

的第3、4位置元素之间插入数组b,得新的数组A7。

8)前后翻转

,得数组A8。

3 数组的四则运算:点运算(对应的元素进行计算)

◆设

均为数组,数组的点运算规则如下

先演示,再重复:

,求

随堂练习3:利用点运算生成新数组

4 数组的关系运算(全部适用于矩阵)

关系运算反映的是两矩阵元素之间的数值关系,运算符为:

关系运算的结果是:0或1。1表示关系成立;0表示关系不成立。

4.1 “= =”关系:是否相等关系

>> a=[1 2 3];b=[1 2 4];c=a==b;  c =     1     1     0

4.2 “~ =”关系:是否不等关系

>> a=[1 2 3];b=[1 2 4];c=a~=b;   c =     0     0     1

4.3 同样,还有如下关系:“

”关系

4.4 逻辑且,&:

>> x=[1 2 3 4];y=[0 3 2 8];x>2&y>2

ans =  0     0     0     1

4.5 逻辑或,|:

>> x=[1 2 3 4];y=[0 3 2 8];x>2|y>2

ans =  0     1     1     1

演示:a =[-4.0,-15.0,7.2,1.6,-3.8,6.9,-8.6,-0.51,-1.2,1.6]

生成新数组A,满足

A=(a<-2)*(-2)+(a<=2&a>=-2)*1.5+(a>2)*2

A =[-2.0,-2.0,2.0,1.5,-2.0, 2.0,-2.0,1.5,1.5,1.5]

随堂练习4

设x=[2.1 -3.2 4.5 2.8 -2 3.5 6.8 2.4 5.3 -5],求

1)生成新数组A1,若

,则

,否则为-2.5;

2)生成新数组A2,若

;否则为0。

3)生成新数组A3,若

,则

,则

;否则

随堂练习5

1)产生10个随机数

满足

2)产生10个随机数

满足

提示:a=rand;x=(a<0.2)*2.3+(a>=0.2&a<0.5)*3.2+(a>=0.5)*4.5

3)设某分段函数如下,计算x=linspace(-pi,pi,50)对应的函数值,请绘图。

5 数组的集合运算

(1)加法运算      c=union(a,b),即

(2)减法运算      C=setdiff(a,b),即

(3)乘法运算      [c,x,y]=intersect(A,B),c是交集元素,x,y是交集元素在A,B中的位置

(4)补集加法运算    C=setxor(a,b),即

(5)剔除数组中重复的元素      C=unique(a)

(6)剔除矩阵中重复的行      C=unique(a,’rows’)

(7)ismember(x0,x):成员识别

随堂练习9

1)设a=[1,2,3,1,2,5],剔除a中重复的元素; unique(a)

2)设A=[1,2,3,1,2,5],B=[1,5,7],求集合运算A+B、A-B、AB

3)设A=[1,2,3,1,2,5],B=[1,5,7],C=[1,3,5,9],求A+B+C,A+B-C

4)设a=[7,3,4,7,3,1,3,2,1,3,5,5,4,5,6,1]

,则

;否则

;提示:ismember

提示:k=ismember(a,[1 2 3]);b=-3*k+3*(1-k)

5)若

,则

;若

,则

;否则为5

6 数组的和sum(x):求数组的和        

随堂练习10

1)设x =[0.32,-0.56,-0.31,-0.57,-1.0, -0.91,-0.21,-1.7],求

2)设x =[ 0.32, -0.56, -0.31, -0.57, -1.0, -0.91, -0.21, -1.7],

y =[ 0.61, -0.12, 0.7, 0.27, 0.49, -1.5, -1.0, -0.45]

3)求下列表达式

     

    

4)求下列表达式

5)求下列表达式

6)圆周率的近似计算

利用

,计算n=50时

的近似值。

7)

的近似计算

利用

,计算n=100时

的近似值。

8)

的近似计算

利用

,求

的近似值。

9)

,计算n=50时

的近似值。

10)

,计算n=50时

的近似值。

6 数组运算的常见函数

◆max(a),min(a):最数组的最大值,最小值

sum(a):求数组的和

length(x): 求x的维数;若x是矩阵,则length(x)是列数。

prod(a):求数组的积

mean(a):求向量a的元素的平均值

median(x):求向量x的元素的中位数,若x维数是奇数,则中间位置的数就是中位数;否则,中间两个数的平均数就是中位数。

harmmean(x):调和平均值,harmmean(x)=

geomean(x):求几何平均数,geomean(x)=

std(x):无偏型标准差      std(x,1):有偏型标准差

var(x):无偏方差          var(x,1):有偏方差

mad(x):绝对平均偏差,mad(x)=

range(x):样本极差,range(x)=

 

norm(x):norm([x1,x2])=

  如norm([3 4])=5

tril(a):生成a的下三角阵

triu(a):生成a的上三角阵

diag([a b c]):以a,b,c为对角线元素构成的对角阵

sort(a):对数组升序

nnz(A):矩阵或数组非零元素总个数

nonzeros(A):剔除0元素后剩下元素形成的数组

reshape(a,m,n):把数组a变成m行n列矩阵,一列一列赋值。

   如a=[1:15],则reshape(a,3,5)为

>> reshape(1:15,3,5)

ans =

     1     4     7    10    13

     2     5     8    11    14

     3     6     9    12    15

repmat(A,m,n):将矩阵A复制m×n块

find(a满足的条件):给出符合条件的元素位置

factorial(n):等于n!  

prod(x):等于

 

gamma(n+1):等于n!

nchoosek (x,m):若x是数组,则表示从x中的元素选m个的所有组合

  若n是一个数值,则nchoosek (n,m)表示组合数   

>> nchoosek(5,2)   ans =10

>> nchoosek(1:3,2)

ans =

     1     2

     1     3

     2     3

>> nchoosek('abc',2)

ans =

ab

ac

bc

◆perms(x):计算所有全排列

>> perms('abc')

ans =cba cab bca bac abc acb

◆randperm(n):对1:n的一个随机排列

>> randperm(5)

ans =     4     5     2     1     3

◆unidrnd(k,m,n):在

上等可能取值m行n列个随机数

>> unidrnd(20,1,8)

ans =4    14     7    18     3    20    11    15

◆permsnk([1 2 3],2):部分排列(自编)

ans =

     2     1

     1     2

     3     1

     1     3

     3     2

     2     3

permsnk('abc',2):部分排列

ans =ba,ab,ca,ac,cb,bc

取整命令

round(x):四舍五入取整

ceil(x):往+∞方向取整

floor(x):往-∞方向取整

fix(x):向0方向取整

rem(x),mod(x):求余

isprime(x):质数识别

primes(20):产生质数

ans =2     3     5     7    11    13    17    19

seqperiod(p):求序列的最小正周期。

>> seqperiod(repmat([1 2 3],1,5))   ans =3

各类识别

isequal(x,y):两数组是否相同识别

ismember(x0,x):成员识别

奇数、偶数识别:奇数:mod(n,2)==1   偶数:mod(n,2)==0

isspace:若是空格则为真

isnumeric:若是数值数组则为真

isempty(a):若a是空矩阵,则为真;

isnan(a):若a= NaN,则为真,否则为0;

isreal:若是实数则为真

第3讲  矩阵及其运算

1 矩阵生成

模式1:直接输入,形如

模式2:从txt,excel里直接调用,同前所述

模式3:函数生成:zeros,ones,rand,randn,eye,normrnd等。

随堂练习:

1)生成如下矩阵

2)学习从word里、Excel、txt里复制数据;

8.9

14.4

-1.0

-0.3

-8.6

15.3

-11.5

3.3

-2.4

-1.6

0.8

-7.7

-10.7

-7.5

3.2

6.3

-12.1

3.7

-8.1

13.7

3.1

10.9

-11.1

-2.3

-29.4

-17.1

-8.6

11.1

-0.1

11.2

3)生成[0,1]上均分分布的随机数,存放在

矩阵上;

4)利用命令生成矩阵

生成

的0矩阵,zeros

生成

的1矩阵,ones

生成

的[0,1]上均分分布的随机数矩阵,rand

生成

的标准整体分布矩阵, randn

生成

的正太分布

矩阵,

生成

上均匀分布矩阵,

生成

的离散均匀分布矩阵,

2 矩阵常见的运算:类似数组运算,略。

3 矩阵的查询运算:find(a满足的条件)

3.1  形式1:查找结果为矩阵展开a(:)后的数组位置

假设矩阵a为

1

2

3

4

2

3

4

5

1

3

5

7

>> k=find(a==2)

k=         k是a列展开后棉组条件的数组位置

     2

     4

3.2  形式2:查找结果为行列坐标的位置

>> [i,j]=find(a==2);[i,j]

i =                行标位置

     2

     1

j =                列标位置

     1

     2

3.3  布尔矩阵查找(非常重要)

b=[1,1,0,1,1;1,1,1,0,0;0,0,1,1,1];

随堂练习:设矩阵A的元素如下,求

8.9

14.4

-1.0

-0.3

-8.6

15.3

-11.5

3.3

-2.4

-1.6

0.8

-7.7

-10.7

-7.5

3.2

6.3

-12.1

3.7

-8.1

13.7

3.1

10.9

-11.1

-2.3

-29.4

-17.1

-8.6

11.1

-0.1

11.2

1)A的最大值、最小值位置

2)A小于0的元素位置

4 矩阵排序:sort,sortrows

sort(A,1):A的所有列升序排列;

sort(A,2):A的所有行升序排列;

sort(A):仅A的第1列升序排列,其它各元素位置不变;

sortrows(A,k):对A的第k列升序排列,其它各行随动

(且每行的元素相对位置保持不变)。

随堂练习:

A=[5,-1,-3,3,-13,5;0,-7,-8,-13,-23,-1;0,14,-11,-9,-14,2;-8,-2,25,-2,3,-5;10,-6,17,8,4,9];

5

-1

-3

3

-13

5

0

-7

-8

-13

-23

-1

0

14

-11

-9

-14

2

-8

-2

25

-2

3

-5

10

-6

17

8

4

9

sortrows(A,1)结果如下:

-8

-2

25

-2

3

-5

0

-7

-8

-13

-23

-1

0

14

-11

-9

-14

2

5

-1

-3

3

-13

5

10

-6

17

8

4

9

练习:第2列升序,其它各列随动

      第3行升序,其它各行随动

5 数组运算的常见函数:  设A,B均为矩阵

A(:):矩阵A展开为一列数组

max(A),min(A):得矩阵每列的最大值,最小值

max(A(:)),min(A(:)):得矩阵的最大值,最小值

sum(A):得矩阵每列的和;

sum(A(:)):得矩阵所有元素的和

mean(A):得矩阵每列的平均值

mean (A(:)):得矩阵所有元素的平均数

prod (A):得矩阵每列的乘积

unique(a,'rows'):剔除矩阵中的重复行        

reshape(a,m,n):把数组a变成m行n列矩阵,一列一列赋值。

   如a=[1:15],则reshape(a,3,5)为

>> reshape(1:15,3,5)

ans =

     1     4     7    10    13

     2     5     8    11    14

     3     6     9    12    15

repmat(A,m,n):将矩阵A复制m×n块

tril(A):生成A的下三角阵

triu(A):生成A的上三角阵

diag([a b c]):以a,b,c为对角线元素构成的对角阵

nnz(A):矩阵或数组非零元素总个数

nonzeros(A):剔除0元素后剩下元素形成的数组

isequal(x,y):两数组或矩阵是否一样,得0或1。

ismember(x0,x):成员识别

A(end:-1:1,:)或flipud(A) :矩阵上下翻转

A(:,end:-1:1)或fliplr(A):矩阵左右翻转

rot90(A,n):矩阵的旋转

sort,sortrows:排序

sortrows(A,k):对A的第k列升序排列,其它各行随动(每行的元素保持不变)。

sort(A):仅A的第1列升序排列,其它各元素位置不变;

sort(A,1):A的所有列升序排列;

sort(A,2):A的所有行升序排列;

det(A):求A的行列式;

rank(A):求A的秩

trace(A) :求A的迹

inv(A):求A的逆矩阵

length(x): 若x是数组,则length(x)是维数;若x是矩阵,则length(x)是列数。

size(A,1)表示矩阵A的行数,size(A,2)表示矩阵A的列数。

size(A):显示A的行数和列数

null(A):得到

标准正交化的基础解系

null(A,'r') :得到

有理形式的基础解系

rref(A):得A的行最简矩阵

orth(a) : 列向量组的标准正交化

zscore(x):标准化

是矩阵,则zscore(x)=

;若x是矩阵,则zscore(x)是各列标准化的结果。

corrcoef(A):矩阵A各列相关系数矩阵

cov(A) :矩阵A各列协方差矩阵

eig(A):%求矩阵A的特征值、特征向量

eigs(A):%求矩阵A的特征值、特征向量,最多给出6个特征值;

第4讲  Matlab平面绘图

一个完整的图形,应该包括基本图形和图形属性两部分。基本图形由图形数据和所需要的图形形状共同决定。图形数据通常由函数或方程产生,有些数据是直接观测的数据。图形形状源于实际需求,Matlab可画的常见的平面图形形状如图1所示。图形属性指的是基本图形之外需要描述的部分,如线的粗细、颜色、线形等;点的形状、颜色等;坐标轴控制等,添加文本说明(text,gtext),添加标题(title)、图形识别(legend)等等。图形属性可在图形函数里直接操作,也可以通过图形句柄操作,或在图形窗口中操作。

2 连线绘图

   常见的平面连线图函数为plot,fplot,本讲重点介绍plot函数。

◆  plot语法

2.1  画基本图形

6)已知平面三点

,连线三点画三角形

7)画中心为原点,其中一边与

轴平行且边长为4的正方形。

2.2  Line的颜色、线型、线宽(粗细)控制

1)线颜色控制

语法类似:p.Color='r',或者 plot(x,y,'r')

2)线型控制:p. LineStyle='-' 或者 plot(x,y,'--')

◆注意:颜色与线型可以放在一起控制,如plot(x,y,'r--')

3)线宽控制:LineWidth

语法类似:数值越大表示线越粗。

h.LineWidth=5,或者plot(x,y,'LineWidth',5)

2.3 点Marker的控制(散点图中的点)

1)点的类型

语法:plot(x,y,'o')

◆注意:颜色、线型、散点类型可以放在一起进行控制,如

plot(x,y,'r--o')

2)散点的大小MarkerSize 

语法类似:p. MarkerSize=5,或者plot(x,y,'MarkerSize',5)

3)散点的边界颜色MarkerEdgeColor

语法类似:p. MarkerEdgeColor=’r’

4)散点的填充颜色MarkerFaceColor

语法类似:p. MarkerFaceColor=’r’

3 用fill函数画出下列基本图形。

4 用bar,barh画如下图形。

5 画如下饼图

6 画如下阶梯图

7 散点图(略)

用text在散点上添加数字。

x =linspace(-pi,pi,10);y=sin(x);plot(x,y,'-ro');

for i=1:10;a=sprintf('%0.2f',y(i));text(x(i),y(i),num2str(a));end

axis([-pi-1 1+pi -1 2])

8 三维绘图,视情况讲解。

相关推荐

  1. MATLAB基础知识

    2024-03-24 03:22:01       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 03:22:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 03:22:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 03:22:01       82 阅读
  4. Python语言-面向对象

    2024-03-24 03:22:01       91 阅读

热门阅读

  1. 素数问题 python

    2024-03-24 03:22:01       38 阅读
  2. 家庭影院组成原理

    2024-03-24 03:22:01       39 阅读
  3. openSSH学习

    2024-03-24 03:22:01       44 阅读
  4. 架构设计常用到的10种设计模

    2024-03-24 03:22:01       37 阅读
  5. 05- 还在双引号添加字符串?- 文本块

    2024-03-24 03:22:01       45 阅读
  6. vue3中reactive详解

    2024-03-24 03:22:01       44 阅读
  7. 前端视角如何理解“时间复杂度O(n)”

    2024-03-24 03:22:01       41 阅读
  8. 软件测试:C++ Google Test单元测试框架GTest

    2024-03-24 03:22:01       43 阅读
  9. 【Rust】Shared-State Concurrency

    2024-03-24 03:22:01       41 阅读