MATLAB 初步使用教程

目录

​编辑

1.命令行窗口

2.变量命名规则

keyword(保留名)

 calling priority(变数优先级)

3.数据类型

4.注释

5.Format的使用

6.semicolon的使用(;)

7.colon的使用 (:)

输出\删除 矩阵特定行(列)

8.矩阵

  矩阵生成⬇

矩阵元素替换⬇

  矩阵索引⬇

  矩阵转置⬇

  矩阵拉长⬇

    单位矩阵⬇

 矩阵求逆⬇(inv())

 重复矩阵⬇(repmat())

  全为0或1的矩阵⬇(zeros()、ones())

对角线有值的矩阵⬇(diag())

9.rand、randi、randn的区别

10.元胞(cell)

  元胞数组的创建⬇(eye()、magic())

 元胞数组的访问⬇

11.结构体

12.矩阵的四则运算

13.矩阵的下标

14.程序结构

for循环结构

while循环结构

if分支结构

switch分支结构

15.二维平面绘图

16.三维立体绘图


 %%黄色为次要点(不重要嘟)

1.命令行窗口

               Ⅰ.clc+Enter删除窗口全部内容

                    clear all+Enter删除工作区全部内容

                    close+Enter关闭当前图像窗口

               Ⅱ.who+Enter显示所有变量

                    whos+Enter显示变量具体的相关信息

               Ⅲ. Ctrl+C强制停止(必须在命令行区域)

                    F9在命令行中运行编译器内代码

                    *Ctrl+R注释(支持批量注释)

                   *Ctrl+I智能缩进

2.变量命名规则

                            Ⅰ.区分大小写

                            Ⅱ.长度不超过63位

                            Ⅲ.以字母开头,由字母、数字、下划线组成

                             (不能使用标点)

                            Ⅳ.不能使用keyword或者Built-in function当作Variable

                              (存在混乱和优先级问题)

keyword(保留名)

                ans(结果)、i,j(负数)、inf(无限大)、eps(极小的数)、NaN(不是数)、pi(Π)

                (在命令行窗口直接输入iskeyword+Enter可显示关键词)

x=1/0
x =

   Inf

 calling priority(变数优先级)

               Variable > Built-in function > Subfunction > Private function (MEX-file>P-file>M-file)

cos='dhisodos'
cos(8)
%%
cos(8)
ans =

    's'
%%
ans =

   -0.1455

 以上例子显示不同优先级对于cos(8)结果的影响

*在运行前者后再单独运行cos(8)时,结果并不会改变,这是因为在工作区中对cos的变数并未改变,可在命令行窗口中输入clear cos,再单独运行cos(8)即可

3.数据类型

       在MATLAB中常用的数据类型分为六种,即逻辑(logical)、字符(char)、数值(numeric)、元胞(cell)、结构体(struct)、函数句柄(function handle)

  * 字符与字符串均由‘ ’引用(length(变量名)计算字符串的长度)

  *MATLAB默认数据类型为double

4.注释

                 &&或&

              (区别为&&上方一行会产生一条直线)

5.Format的使用

MATLAB中通过命令format来针对数据的显示形式进行控制

*但对于数据的储存形式与计算精度没有影响

%Ⅰ
format short %显示5位(3.1416)
format long %显示7位单精度,15位双精度
%Ⅱ
format short e %5字长浮点数
pi
format long e %15字长浮点数
pi
ans =

   3.1416e+00 %00表示10的几次方


ans =

     3.141592653589793e+00
%Ⅲ
format hex %16进制
format bank %定点货币形式
format rat %分数有理化显示

6.semicolon的使用(;)

在命令后加 ;使该条命令的结果不显示在命令行窗口中

a=10
b=10;
>> a=10
b=10;

a =

    10

7.colon的使用 (:)

*步长省略默认为1 

B=1:3:9%以1为最小值,3为步长,9为最大值生成的单行矩阵(三个元素缺一不可)
B =

     1     4     7
输出\删除 矩阵特定行(列)
C=[1 2 3;4 5 2;3 2 7]
% : 取全部
C(3,:) %输出
C(3,:)=[] %删除
C =

     1     2     3
     4     5     2
     3     2     7


ans =

     3     2     7


C =

     1     2     3
     4     5     2

8.矩阵

  矩阵生成⬇
A=[1 2 3;4 5 2;3 2 7]%同行之间用' '或','分隔,分段用';'
>> A=[1 2 3;4 5 2;3 2 7]

A =

     1     2     3
     4     5     2
     3     2     7
矩阵元素替换⬇

(将A矩阵中的5换为25) 

A(2,2)=25
>> A(2,2)=25

A =

     1     2     3
     4    25     2
     3     2     7
  矩阵索引⬇
A=[1 2 3 4];
B=[1;2;3;4];
C=[1 2 3;4 5 2;3 2 7]

%Ⅰ索引单个元素
A(3)
B(3)
C(1,2)
C(4) %两者作用等同

%Ⅱ索引部分矩阵
C([1 3 5])
C([1 3;1 3])
C([1 3],[1 3]) %详解见下图
%Ⅰ
%A
ans =

     3

%B
ans =

     3

%C
ans =

     2

%C
ans =

     2
%Ⅱ
C =

     1     2     3
     4     5     2
     3     2     7


ans =

     1     3     5


ans =

     1     3
     1     3


ans =

     1     3
     3     7

*关于C(4)的使用 

*关于C([1 3],[1 3])的使用  

  矩阵转置⬇
A=[1 2 3;4 5 2;3 2 7]
B=A'
>> B=A'

B =

     1     4     3
     2     5     2
     3     2     7
  矩阵拉长⬇
A=[1 2 3;4 5 2;3 2 7]
C=A(:)
>> C=A(:)

C =

     1
     4
     3
     2
     5
     2
     3
     2
     7
    单位矩阵⬇
A=[1 2 3;4 5 2;3 2 7]
D=inv(A)
A*D
>> A*D

ans =

    1.0000    0.0000   -0.0000
    0.0000    1.0000   -0.0000
    0.0000    0.0000    1.0000
 矩阵求逆⬇(inv())
A=[1 2 3;4 5 2;3 2 7]
D=inv(A)
>> D=inv(A)

D =

   -0.9118    0.2353    0.3235
    0.6471    0.0588   -0.2941
    0.2059   -0.1176    0.0882
 重复矩阵⬇(repmat())
B=[1 4 ;2 5]
C=repmat(B,3,2)%将B生成3行2列
C =

     1     4     1     4
     2     5     2     5
     1     4     1     4
     2     5     2     5
     1     4     1     4
     2     5     2     5
  全为0或1的矩阵⬇(zeros()、ones())
E=zeros(10,5,3) %10行5列的3维图像
D=ones(4,3) %生成4行3列且元素全为1的矩阵
>> E=zeros(10,5,3)

E(:,:,1) =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0


E(:,:,2) =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0


E(:,:,3) =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

D =

     1     1     1
     1     1     1
     1     1     1
     1     1     1
对角线有值的矩阵⬇(diag())

*其他部分均为零

9.rand、randi、randn的区别

    Ⅰ.rand生成均匀分布的伪随机数(分布在0-1之间)

    Ⅱ.randi生成均匀分布的伪随机整数

    Ⅲ.randn生成标准正态分布的伪随机数(均值为0,方差为1)

%rand(m,n)生成m行n列的伪随机数
%rand(m,n,'double')生成指定精度(也可以是single)
E(:,:,1)=rand(10,5)
%randi(iMax)在区间(0,iMax]生成均匀分布的伪随机整数
%randi(iMax,m,n)在区间(0,iMax]生成m×n型随机矩阵
%E=randi([iMin,iMax],m,n)在区间[iMin,iMax]生成m×n型随机矩阵
E(:,:,2)=randi(5,10,5)
E(:,:,3)=randn(10,5)

E(:,:,1) =

    0.2760    0.7513    0.8407    0.3517    0.0759
    0.6797    0.2551    0.2543    0.8308    0.0540
    0.6551    0.5060    0.8143    0.5853    0.5308
    0.1626    0.6991    0.2435    0.5497    0.7792
    0.1190    0.8909    0.9293    0.9172    0.9340
    0.4984    0.9593    0.3500    0.2858    0.1299
    0.9597    0.5472    0.1966    0.7572    0.5688
    0.3404    0.1386    0.2511    0.7537    0.4694
    0.5853    0.1493    0.6160    0.3804    0.0119
    0.2238    0.2575    0.4733    0.5678    0.3371


E(:,:,2) =

     1     3     1     3     5
     4     1     5     5     4
     2     2     1     1     2
     3     5     4     2     3
     1     1     5     1     3
     4     5     5     1     1
     2     3     1     5     2
     4     5     2     3     1
     4     1     2     3     1
     4     3     5     1     2


E(:,:,3) =

   -0.5336    1.3514   -0.8655    0.1837    1.2607
   -2.0026   -0.2248   -0.1765   -0.4762    0.6601
    0.9642   -0.5890    0.7914    0.8620   -0.0679
    0.5201   -0.2938   -1.3320   -1.3617   -0.1952
   -0.0200   -0.8479   -2.3299    0.4550   -0.2176
   -0.0348   -1.1201   -1.4491   -0.8487   -0.3031
   -0.7982    2.5260    0.3335   -0.3349    0.0230
    1.0187    1.6555    0.3914    0.5528    0.0513
   -0.1332    0.3075    0.4517    1.0391    0.8261
   -0.7145   -1.2571   -0.1303   -1.1176    1.5270

10.元胞(cell)

       元胞的独特在于它可以储存任意类型的数据,元胞数组作为MATLAB特有的一种数据类型,是数组的一种,同元胞的特性,它也可以储存不同类型的数据(其中的每一个元素都是元胞类型)

 *在matlab中数组均是从1开始

  元胞数组的创建⬇(eye()、magic())
%part 1.可以用cell()
%(每个元胞储存的都为空数组)
A=cell(1,6)%生成1×6的cell数组
A=cell(n)%生成n×n的cell数组

%part 2.可以用{}
A={1,1,1;1,1,1}%生成2×3的cell数组

%part 3.
A{2}=eye(3)%在A的第二个cell数组生成3×3的对角线数值为1的单位矩阵
A{5}=magic(5)%magic(n)用来生成n阶幻方,即横竖,对角线之和都相等
B=A{5}
[m,n]=find(B>20)%在矩阵中找出大于20的序号值
%part 1.
>> A=cell(1,6)

A =

  1×6 cell 数组

    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}

>> A=cell(3)

A =

  3×3 cell 数组

    {0×0 double}    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {0×0 double}

%part 2.
>> A={1,1,1;1,1,1}

A =

  2×3 cell 数组

    {[1]}    {[1]}    {[1]}
    {[1]}    {[1]}    {[1]}

%part 3.
A =

  1×6 cell 数组

    {0×0 double}    {3×3 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}


A =

  1×6 cell 数组

    {0×0 double}    {3×3 double}    {0×0 double}    {0×0 double}    {5×5 double}    {0×0 double}


B =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

m =

     2
     1
     5
     4
     3


n =

     1
     2
     3
     4
     5
 元胞数组的访问⬇
A={1,1,1;1,1,1}
C=A(1,1)%元胞数组A第一行第一列的元胞
B=A{1,1}%元胞数组A第一行第一列的元胞所储存的内容
>> A={1,1,1;1,1,1}
C=A(1,1)
B=A{1,1}

A =

  2×3 cell 数组

    {[1]}    {[1]}    {[1]}
    {[1]}    {[1]}    {[1]}


C =

  1×1 cell 数组

    {[1]}


B =

     1

>> B=A{1,1}

11.结构体

books=struct('name',{{'Xiao dou dou','Da dou dou'}},'prince',[30,40])
books.name
books.name(1)%返回值为cell
books.name{1}%返回值为字符串
>> books=struct('name',{{'Xiao dou dou','Da dou dou'}},'prince',[30,40])
books.name
books.name(1)
books.name{1}

books = 

  包含以下字段的 struct:

      name: {'Xiao dou dou'  'Da dou dou'}
    prince: [30 40]


ans =

  1×2 cell 数组

    {'Xiao dou dou'}    {'Da dou dou'}


ans =

  1×1 cell 数组

    {'Xiao dou dou'}


ans =

    'Xiao dou dou'

12.矩阵的四则运算

  运算优先级:'()' > '^' > '*' '/'

  基本运算
A=[1 2 3 4;5 6 7 8]
B=[1 2 3 4;5 6 7 8]
C=A+B
D=A-B
E=A*B'%A*B的转置(只有第一个矩阵的列数与第二个矩阵的行数相同才行)
F=A.*B%AB对应项相乘
G=A/B%即A*B的逆矩阵(矩阵求逆详情见5.矩阵)
H=A./B%AB对应项相除
>> A=[1 2 3 4;5 6 7 8]
B=[1 2 3 4;5 6 7 8]
C=A+B
D=A-B
E=A*B'
F=A.*B
G=A/B
H=A./B
A =

     1     2     3     4
     5     6     7     8


B =

     1     2     3     4
     5     6     7     8


C =

     2     4     6     8
    10    12    14    16


D =

     0     0     0     0
     0     0     0     0


E =

    30    70
    70   174


F =

     1     4     9    16
    25    36    49    64


G =

    1.0000    0.0000
   -0.0000    1.0000


H =

     1     1     1     1
     1     1     1     1

  特殊运算 

*均以列为运算单位

max()、sum()、mean()
A=[1 2 3;0 5 6;7 0 9]
max(A) %求每一列元素的最大值(min()同理)
max(max(A)) %求矩阵内元素最大值
sum(A) %求每一列的元素和
mean(A) %求每一列的元素和的平均
A =

     1     2     3
     0     5     6
     7     0     9


ans =

     7     5     9


ans =

     9


ans =

     8     7    18


ans =

     2.666666666666667e+00     2.333333333333333e+00     6.000000000000000e+00
 sort()、sortrows()
A=[1 2 3;0 5 6;7 0 9]
sort(A) %对每一列的元素进行从小到大排列
sortrows(A) %按第一行元素大小升序,若第一行相同,则看第二行,以此类推
sortrows(A,2) %按第二行,若相同,保持原样不变
A =

     1     2     3
     0     5     6
     7     0     9

ans =

     0     0     3
     1     2     6
     7     5     9


ans =

     0     5     6
     1     2     3
     7     0     9


ans =

     7     0     9
     1     2     3
     0     5     6
 size()、length()、find()
A=[1 2 3;0 5 6;7 0 9]
size(A) %获取矩阵行数和列数
length(A) %最大数组维度长度(行数和列数中的最大值)
find(A==5) %寻找数组元素对应位置
A =

     1     2     3
     0     5     6
     7     0     9


ans =

     3     3


ans =

     3


ans =

     5

13.

14.程序结构

       MATLAB逻辑与控制流程主要分为以下四种

         Ⅰ.for...end

         Ⅱ.if...else...end

         Ⅲ.while...end

         Ⅳ.switch...case...end

for循环结构

结构格式 : for 循环变量=初值:步长:终值 

                     执行语句1

                     .......

                     执行语句n

                     end

  *步长默认值为1,可以省略

  例:求1^2+2^2+3^2+4^2+5^2的和

sum=0;
for n=1:5
    sum=sum+n^2;%不存在+=
end
>> sum%在命令行窗口中输入sum

sum =

    55

例:求1到5的阶乘和

%%
su=0;
for i=1:5
    p=1;
    for j=1:i
        p=p*j;
    end
    su=su+p;
end
>> su

su =

   153
while循环结构

结构格式 :while 条件表达式

                   执行语句1

                       .......

                   执行语句n

                   end

例:求1+2+3...+10的和

summ=0;
n=1;
while n<=10
    summ=summ+n;
    n=n+1;
end
>> summ

summ =

    55

例:求1到100的奇数和

sum=0;
n=1;
while n<=100
    sum=sum+n;
    n=n+2;
end
>> sum

sum =

        2500
if分支结构

结构格式 :if 条件表达式

                   语句体1

                   else

                   语句体2

                   end

*1为真,0为假,当表达式为真时,执行语句体

a=100;
b=10;
if a>b
    '成立'
else
    '不成立'
end
ans =

    '成立'
switch分支结构

结构格式 :switch 表达式(数值或字符串)

                              case 数值或字符串1

                              语句体1;

                              case 数值或字符串2

                              语句体2;

                               .....

                              otherwise

                              语句体n;

                     end 

*switch后表达式的值与case后面的值进行比较,若与case中的值相同,则执行该语句;若与所有case中的值都不相同,则执行otherwise下的语句。

(otherwise可省略,均不满足时则跳出分支结构)

15.二维平面绘图

 例:绘制函数图像 y=sin(x)

x=0:0.01:2*pi;%pi等同于Π
y=sin(x);
figure%建立幕布
plot(x,y)%plot将每个点连起来,断点用scatter
title('y=sin(x)')
xlabel('x')
ylabel('sin(x)')
xlim([0 2*pi])%定义域

例.绘制多条线性图像

x=0:0.01:20;
y1=200*exp(-0.05*x).*sin(x);%exp()以e为底的指数函数
y2=0.8*exp(-0.5*x).*sin(10*x);
figure
[AX,H1,H2]=plotyy(x,y1,x,y2,'plot');%plotyy指两个y轴共用一个x轴
%[AX,H1,H2]=plotyy():返回AX中创建的两个坐标轴的句柄以及H1和H2中每个图形绘图对象的句柄
%AX(1)为左侧轴,AX(2)为右侧轴
set(get(AX(1),'Ylabel'),'String','Slow Decay')
set(get(AX(2),'Ylabel'),'String','Fast Decay')
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')

 *以下为各类参数 

16.三维立体绘图

例.

t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on%在绘图中加网格线
axis square%将绘图变为正方形

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值