MATLAB教学_02基本操作与矩阵入

本文主要讲了学习 ‘MATLAB教程_台大郭彦甫’ P2_02基本操作与矩阵输入 中的一些心得。
视频地址: https://www.bilibili.com/video/av68228488?p=2

变数

使用“=”可以宣告一个变数。并且在WorkSpace里右以看到这个宣告的变数。
正确 : A=10 ;把10这个数指定给A这个变数
错误: 10 = A ;一个变数必须在左边;
在MATLAB中,大小写的变量是不一样的。例如:

A=10
a=10

则在工作区可以看到两个变量,如下:
在这里插图片描述
在变数中,开头不可以有数字,如下:
在这里插入图片描述

变数的类型

在这里插入图片描述
在numeric中我们可以看到有single, double, 还有有符号的还有无符号。

例如我们刚才输入的 A= 10, 在工作区双击这个变量,可以看到它的类型。
也可以在命令行窗口输入whos, 查看所有的变数的类型,如下:
在这里插入图片描述
有一些特别的变数,是在MATLAB中固定使用的,最好不要用这些关键字:

在这里插入图片描述
i,j代表的是复数;Inf:无穷大; eps:很小的数; NaN:不存在的数;

输入 iskeyword 可以查看哪些是关键字:
在这里插入图片描述

变数调用的优先级

MATLAB内部调用的时候会根据优先极的顺序开始调用:
在这里插入图片描述
优先级最高的是用户自己对变数的定义,再是MATLAB内部的自建函数,例如一些三角函数等;再是子函数,然后私有函数。看如下例子:

cos='This string.';
cos(8)

本来,cos是一个内建的三角函数,但是在这里,把cos 赋值为一串字符串,所以cos(8)相当于这个字符串的第8个字符,为 r,如下:
在这里插入图片描述
此时,在工作区可以看到,cos表示的值为 ‘This string.’。已经不是一个三角函数了。
在这里插入图片描述

变量的删除

可以使用函数 clear

clear  ;删除所有工作区的变数
clear cos; 删除名叫 ‘cos’ 的变数

格式

在MATLAB里面有些固定的格式,根据使用的方便性,可以选择不同的格式。

在这里插入图片描述
默认使用的都是 short 格式。 如果要使用长的格式,可以使用 format long, 如下:

format long

shortE和longE分别是显示短的科学计数和显示长的科学计数。 **rat 是分数显示。**有些情况下需要显示分数形式。

这里 hex 为什么显示很奇怪。参考博文:https://blog.csdn.net/weixin_44857688/article/details/112676959

首先了解什么是二进制双精度数字
百度百科对于“二进制双精度数字”的解释:
双精度浮点数(double)是计算机使用的一种数据类型,使用 64 位(8字节) 来存储一个浮点数。C、C++中使用到的双精度浮点数(double)类型是在IEEE二进制浮点数算术标准中定义的。

3、IEEE二进制浮点数算术标准
IEEE二进制浮点数算术标准是一种科学计数法,用符号、指数和尾数来表示。下面是具体的规格:
在这里插入图片描述

double类型共计64位,折合8字节。由最高到最低位分别是第63、62、61、……、0位。
最高位63位是符号位,1表示该数为负,0表示该数为正。
62-52位,一共11位是指数位,可以表示范围是-1024 ~ 1023。因为指数可以为负,为了便于计算,规定都先加上 1023 ( 2 10 − 1 ) 1023(2^{10}-1) 1023(2101)
51-0位,一共52位是尾数位。由于浮点数精度问题,整数部分与小数部分一共算够53位即可,最高位的1不写入内存(最终保留下来的还是52位)。
下面通过一个例子来说明。
π − > 400921 f b 54442 d 18 \pi ->400921fb54442d18 π>400921fb54442d18
3.141592653589793(D) -> 1 1.001 0010 0001 1111 1011 0101 0100 0100 0100 0010 1101 0001 1000(B)
假设3.1415926535898(D)的双精度IEEE二进制表示为:xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx(B)
因为3.1415926535898(D)为正数,第一位符号位为0:0xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx(B)
1 1.001 0010 0001 1111 1011 0101 0100 0100 0100 0010 1101 0001 1000(B)的科学计数法表示为1. 1001 0010 0001 1111 1011 0101 0100 0100 0100 0010 1101 0001 1000*2^1(B),指数1,尾数1. 1001 0010 0001 1111 1011 0101 0100 0100 0100 0010 1101 0001 1000。按照规定,指数为1+1023=1024(D)->100 0000 0000(B),尾数最高位1省去,所以只剩下1001 0010 0001 1111 1011 0101 0100 0100 0100 0010 1101 0001 1000:0100 0000 0000 1001 0010 0001 1111 1011 0101 0100 0100 0100 0010 1101 0001 1000 (B)
0100 0000 0000 1001 0010 0001 1111 1011 0101 0100 0100 0100 0010 1101 0001 1000 (B) -> 4009 21FB 5444 2D18(H)
————————————————
版权声明:本文为CSDN博主「三木青年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44857688/article/details/112676959

第48页练习题,如下:
在这里插入图片描述

分号的使用

在命令行后面,有分号(;)的话,不会显示结果,无分号的话,会显示结果。如下:

在这里插入图片描述
但其实MATLAB已经保存了 a=10 这个变数,我们在工作区可以看到,如下:

在这里插入图片描述

clc \clear\who\whos

clc :清屏;
clear :移除工作区所有的变数;
who :显示在工作区的变数;
whos :显示在工作区变数的类型;

矩阵

矩阵和向量都是使用 中括号[ ])来显示。

A=[1 2 3 4]   ;
B=[1;2;3;4]   ;列向量是使用分号(;)来划分一的。

在这里插入图片描述

矩阵元素指引

假设,矩阵如下图:
在这里插入图片描述
第一种方法,没有使用逗号(,):

A(8)    ;表示这个矩阵的第8个元素,在MATLAB里元素是按着一列一列去数,先数第一列,再数第二列,所以A(8)=9
A([1 3 5])  ;方括号里是一组数,表示第1个元素、第3个元素、第5个元素,并且新的元素组成了一个行向量, [1 31 17]
A([1 3; 2 6]) ; 方括号里寻找的元素组成了一个新的矩阵, [ 1 31; 5 2]

如下所示:
在这里插入图片描述
第二种方法,里面有使用到逗号(,),如下:

A(3,2)  ;表示寻找的是A矩阵的第3行,第2列的元素,则为 2
A([1 3],[1 3]) ;逗号前表示的是行,所以是第1行和第3行,逗号后面表示的是列,所以是第1列和第3列,那么两者相关的地方会         
               ;组成一个新的矩阵,[1 6;31 7]

在这里插入图片描述

第71分钟作业

在这里插入图片描述
在这里插入图片描述
对于最后一问,也可以使用冒号的一个用法。 A(3,:)=[ ]

冒号操作符

<1> 冒号可以做等差算术;

j:k    ;作一个从j到k的数列,默认每次加1
j:i:k  ;作一个从j到k的数列,默认每次加i,如果快到k时,不够加i,则最后的几个数会忽略掉

<2> 冒号可以选择某一行或列的全部数据,例如:
在这里插入图片描述

矩阵组合

假设有矩阵A,矩阵B。可以将A和B组合在一起,变成一个新的矩阵。 例如: F=[A B] ; F=[A;B] ;

在这里插入图片描述
注意:在使用的过程中,一定要注意你要组合的两个矩阵是否有相同的列或者行。
在这里插入图片描述

矩阵的算法

在这里插入图片描述

y3=A.*B     ;点乘,就是A矩阵里的第一行的第一个元素乘以B矩阵里的第一行的第一个元素,然后A矩阵的第一行的第二个元素乘
            ;以矩阵B的第一行的第二个元素,一直如此下去
y5=A./B     ;点除,类似于点乘
C=A'        ;将矩阵A转置

具体如下:
在这里插入图片描述

特殊矩阵

linspace(x1,x2)     ;生成x1到x2之间的100个等间距点的行向量
linspace(x1,x2,n)   ;生成x1到x2之间的n个等间距点的行向量
eye(n)              ;生成n行n列的对角线上全是1的矩阵
zeros(n1,n2)        ;生成n1行n2列的全是0的矩阵
ones(n1,n2)         ;生成n1行n2列的全是1的矩阵
diag([n1 n2])       ;生成对角线上是方括号内部数据的矩阵。
rand(n1,n2)         ;生成n1行n2列随机数矩阵,生成的数为0-1之间

与矩阵相关的函数

max(A)         ;找到A矩阵里每一列的最大值,组成一个行向量
max(A')        ;找到A矩阵里每一****的最大值,组成一个行向量
max(max(A))    ;找到A矩阵里每一列的最大值,组成一个行向量,在这一个行向量里,找到最大的值
min(A)         ;找到A矩阵里每一列的最小值,组成一个行向量
sum(A)         ;算出A矩阵里每一列的和,组成一个行向量
mean(A)        ;算出A矩阵里每一列的平均值,组成一个行向量


sort(A)        ;将每一列从小排到大
sortrows(A)    ;每一行作为一整体,根据第一列从小到大,其它列整体移动
size(A)        ;矩阵A有多少行和多少列
length(A)      ;在矩阵A中,如果行比列多,则返回行数,如果列比行多,则返回列数。也就是返回行和列中多的一个
find(A)        ;寻找矩阵A中非零元素的位置是多少
find(A==5)     ;返回矩阵A中等于5的位置,注意,是位置,而不是数。
  • 49
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值