许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  大四学生MATLAB笔记(基础篇)

大四学生MATLAB笔记(基础篇)

阅读数 52
点赞 0
article_banner

本文为学习Mooc 课程“科学计算与Matlab语言”专题一的笔记。

#留作自己复习用,也方便其他同学查找相关的内容。

#另外,想学习的同学可以免费报名参加Mooc官网所提供的相关课程。


一、基础知识:

求解 x²-3x+1=0 的根;

采用roots 求根;

新生注意,“;”表示暂时不输出结果

>> p=[1-31];
>> x=roots(p)

x =

2.6180
0.3820

采用定义符号求解(1)中的例题:

利用sysm来定义变量x,利用solve 来求解解析表达,利用eval 来得到小数的值;

>> syms x;
x = solve(x^2 - 3*x + 1)
 
x =
 
 3/2 - 5^(1/2)/2
 5^(1/2)/2 + 3/2

>> x=eval(x)

x =

    0.3820
    2.6180

函数绘图,采用(1)中的函数进行绘制:

size表示输出矩阵的行与列

zeros(size(x))表示生成一个同行列的零矩阵;

“.*”表示矩阵的对应元素相乘,要求两个矩阵必须是同行列的;

“*”则对应的是矩阵乘法,矩阵AB的乘法要求A的列数等于B的行数;

plot函数进行绘制,必须一个x对应一个y,两条曲线则要输入plot(x,y1,x,y2);

>> x=[-5:0.1:5];
>> y1=x.*x-3*x+1;
>> y2=zeros(size(x));
>> plot(x,y1,x,y2);

以上命令所绘制的函数曲线

利用fzero 函数来求解函数零点:

这里要注意的是,必须有@(x)这个函数句柄,其作用在于定义变量x

>> f=@(x)x^2-3*x+1;
>> x=fzero(f,0.5)

x =

    0.3820
>>  y=fzero(f,2.5)

y =

    2.6180

另外的一些基础知识:

matlab函数的自变量往往是矩阵,而因变量也为对应的矩阵,例如:

>> A = [0.5*pi,pi;1.5*pi,2*pi];
>> B=sin(A)

B =

    1.0000    0.0000
   -1.0000   -0.0000

对于三角函数而言,sin表示弧度制,而sind表示角度制:

>> sin(0.5*pi)

ans =

     1

>> sind(90)

ans =

     1

abs函数用于取复数的模或者实数的绝对值:

>> a=3+4i;
>> abs(a)

ans =

     5

四种取整函数:

>> a=5.5;
>> floor(a)

ans =

     5

>> ceil(a)

ans =

     6

>> round(a)

ans =

     6

>> fix(a)

ans =

     5

先说floor和ceil,这两个相当于 [X] [X]+1 ,即向下取整与向上取整。

而round函数更简单,直接四舍五入。

fix函数是取和原点近的整数,因此可以理解为直接消去小数,例如:

>> a=[3.6,-3.6];
>> fix(a)

ans =

     3    -3

找到345的个位,十位,百位(rem为取余数):

 >> m=345;
m1=rem(m,10)
m2=rem(fix(m/10),10)
m3=fix(m/100)

m1 =

     5


m2 =

     4


m3 =

     3

找到100以内的素数:

>> x=1:100;
k=isprime(x);
k1=find(k);
p=x(k1)

p =

  1 至 23 列

     2     3     5     7    11    13    17    19    23    29    31    37    41    43    47    53    59    61    67    71    73    79    83

  24 至 25 列

    89    97

isprime函数是可以判断一个数是否为素数的函数,是素数输出1,否则输出0

x为一个100维的向量,k对应的也为一个100维的向量。

find函数可以用来查看非零元素的序号

其实这个问题输出k1和输出p的结果是完全相同的,因为非零元素的序号就是元素本身。

最后一行指的是在x中提取,提取k1对应位置的元素。

二、关于矩阵的基本知识:

1.关于建立矩阵:

(1)直接输入,用两端中括号括起来,逗号分隔每一行的元素,分号表示换行;

>> a=[1,2,3;4,5,6]

a =

     1     2     3
     4     5     6

(2)利用分块矩阵:

>> a=[1,2,3;4,5,6]

a =

     1     2     3
     4     5     6

>> b=[7,8,9]

b =

     7     8     9

>> c=[a;b]

c =

     1     2     3
     4     5     6
     7     8     9

(3)利用矩阵运算:

>> a=[1,1,1];
>> b=[1,3,5];
>> c=a+i*b

c =

   1.0000 + 1.0000i   1.0000 + 3.0000i   1.0000 + 5.0000i

>> d=a+b*i

d =

   1.0000 + 1.0000i   1.0000 + 3.0000i   1.0000 + 5.0000i

2.关于建立行向量:

(1)利用初始值,步长与最终值(省略步长默认为1):

note:用冒号进行连接,进行向量的创建

>> t=1:3:10

t =

     1     4     7    10

>> u=1:11

u =

     1     2     3     4     5     6     7     8     9    10    11

(2)利用linspace 函数进行创建,输入初始值,最终值,元素总数:

note:用冒号创建是根据步长的,用linspace是根据向量size的;

另外,如果不输入总个数,Matlab默认共100个值。

>> k=linspace(0,100,3)

k =

     0    50   100

>> v=linspace(1,100)

v =

  1 至 23 列

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

  24 至 46 列

    24    25    26    27    28    29    30    31    32    33    34    35    36    37    38    39    40    41    42    43    44    45    46

  47 至 69 列

    47    48    49    50    51    52    53    54    55    56    57    58    59    60    61    62    63    64    65    66    67    68    69

  70 至 92 列

    70    71    72    73    74    75    76    77    78    79    80    81    82    83    84    85    86    87    88    89    90    91    92

  93 至 100 列

    93    94    95    96    97    98    99   100

3.引用矩阵的元素:

(1)通过位置进行引用,A(i,j)表示调用这个位置的元素,利用等号可以给元素进行修改或者添加,添加的意思是指,如果矩阵是2×2的,在提取元素i或j的过程中存在超过2×2的范围,依然可以赋值,这个时候默认空缺元素为零,如下:

>> a=[1,2,3;4,5,6];
>> a(1,2)=1

a =

     1     1     3
     4     5     6

>> a(3,5)=1

a =

     1     1     3     0     0
     4     5     6     0     0
     0     0     0     0     1

(2)通过序号进行引用:

note:序号是从左向右,每一列从左到右排列的,例如:

>> a=[1,4,7;2,5,8;3,6,9];
a(8)

ans =

     8

(3)sub2ind (S,I,J)函数,I为行下表,J为列下表,S为矩阵的尺寸size,表示提取一个位置处元素的序号:

>> size(a)

ans =

     3     3

>>  sub2ind(size(a),[1,1],[1,2])

ans =

     1     4

其实这里和a矩阵是什么元素是无关的,这知识一个位置与序号的转换,当然,位置的行标和列标不光可以是向量,还可以是矩阵:

>> sub2ind(size(a),[1,2,3;1,2,3],[1,1,1;2,2,2])

ans =

     1     2     3
     4     5     6

得到的结果是一至六,它的位置恰好是按照从左向右每一列从上到下选取的,更要说明的是,I与J可以是同型矩阵。

(4)ind2sub 就是sub2ind的逆过程,从序号得到行列指标,如图:

>> [i,j]=ind2sub(size(a),[1,2,3,4,5,6,7,8,9])

i =

     1     2     3     1     2     3     1     2     3


j =

     1     1     1     2     2     2     3     3     3

(5)引用子矩阵:

A(i,j)表示引用一个元素;

A(i:i+m,j:j+n)表示引用一个子矩阵;

note:如果这里的i与i+m之间为i:k:i+m则k表示步长

如果在行或者列处直接用“:”代替,表示全部引用;

>> a

a =

     1     2     3     4     5     6     7     8
     9    10    11    12    13    14    15    16
     1     2     3     4     5     6     7     8
     9    10    11    12    13    14    15    16
     1     2     3     4     5     6     7     8
     9    10    11    12    13    14    15    16

>> a(1:2:5,:)

ans =

     1     2     3     4     5     6     7     8
     1     2     3     4     5     6     7     8
     1     2     3     4     5     6     7     8

当然,完全可以引用特定行,用两个向量分别表示行和列即可:

>> a([1,3,5],[1,2,3])

ans =

     1     2     3
     1     2     3
     1     2     3

end可以表示最后一行:

>> a(end,:)

ans =

     9    10    11    12    13    14    15    16

>> a(:,end)

ans =

     8
    16
     8
    16
     8
    16

>> a(3:end,:)

ans =

     1     2     3     4     5     6     7     8
     9    10    11    12    13    14    15    16
     1     2     3     4     5     6     7     8
     9    10    11    12    13    14    15    16

(6)删除矩阵中的元素:

空矩阵可以表示删除,形如[ ]。

>> a(:,[1,2])=[]

a =

     3     4     5     6     7     8
    11    12    13    14    15    16
     3     4     5     6     7     8
    11    12    13    14    15    16
     3     4     5     6     7     8
    11    12    13    14    15    16

(7)利用reshape重铸矩阵的结构,但是元素顺序不变:

>> c=[1,2,3,4]

c =

     1     2     3     4

>> d=reshape(c,2,2)

d =

     1     3
     2     4

另外的一个表达c(:)表示把他按照顺序排成一个列向量。

三、Matlab的基本运算:

1.算数运算:

(1)加“+”,减“-”,乘“*”,右除“/”,左除“\”,乘方“^”。

note:Matlab运算是基于矩阵意义的。

重点说一下“/”与“\”的含义:

A/B=A*inv(B),即B右除A等于B乘A矩阵的逆矩阵;

A\B=inv(A)*B,即A左除B等于A的逆矩阵乘B矩阵;

(2)“.”运算:

点运算要求两个矩阵必须同型,然后对应元素做相应运算。

"./";".\";".*"都同理

>> x=[0.1:0.3:1];
>> y=sin(x).*cos(x)

y =

    0.0993    0.3587    0.4927    0.4546

2.关系运算:

(1)两个标量的比较,是直接比较大小的,成立时结果取1,否则为0

判断等于的时候的方式是输入“==”,而不是“=”。

>> x=1

x =

     1

>> x>2

ans =

     0

>> x==1

ans =

     1

(2)同型矩阵之间逐个元素进行比较;标量与矩阵比较等价于标量与矩阵的每一个元素进行比较,如下:

>> a=[1,1,1;1,1,1;1,1,1];
>> b=[2,2,2;2,2,2;2,2,2];
>> a>b

ans =

     0     0     0
     0     0     0
     0     0     0

>> a<3

ans =

     1     1     1
     1     1     1
     1     1     1

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...

相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空