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(210−1)1023(2^{10}-1)1023(210−1)
51-0位,一共52位是尾数位。由于浮点数精度问题,整数部分与小数部分一共算够53位即可,最高位的1不写入内存(最终保留下来的还是52位)。
下面通过一个例子来说明。
π−>400921fb54442d18\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的位置,注意,是位置,而不是数。
MATLAB教学_02基本操作与矩阵入相关推荐
- MATLAB的学习——基本操作和矩阵操作
基本操作 命令窗口操作: clc :删除以上的操作及输出: clear x y z 删除上面的 x y z 三个变量的值 输出格式的限定 >> format long >> x ...
- matlab矩阵初等变换矩阵,实验一 MATLAB基本操作及矩阵初等运算
实验一 MATLAB 基本操作及矩阵初等运算 实验目的: 1.熟悉matlab 的界面: 2.熟练掌握matlab 的变量.矩阵定义和基本赋值符号: 3.熟练掌握matlab 矩阵的引用及矩阵初等运算 ...
- [MATLAB]基本操作与矩阵输入
基本操作与矩阵输入 基本操作 基本的四则运算 嵌入函数 复数运算 变量 变量基本规则 查询变量 将内置函数更改意义 Format 符号 矩阵及向量 矩阵的输入 索引 矩阵元素的替换 :操作符 增广矩阵 ...
- MATLAB(一)基本操作与矩阵输入
文章目录 前言 一.Matlab视窗 二.基本操作与矩阵输入 1. 把MATLAB当做计算机 2. 初等数学函数 Exercise练习 2. 嵌入函数 3. 特殊变量和常量 4.MATLAB调用优先 ...
- matlab 图像上下翻,Matlab图像九宫格基本操作(翻转,镜像等)+位图操作
Matlab图像九宫格基本操作(翻转,镜像等)+位图操作 Matlab图像九宫格基本操作(翻转,镜像等)+位图操作 这次blog提到的操作对于matlab来说都很基础,而且对于有编程和计算机基础的人来 ...
- matlab mex 矩阵,如何从mex函数访问matlab结构字段中的矩阵?
如何从mex函数访问matlab结构字段中的矩阵? 我试图弄清楚如何从mex函数访问存储在matlab结构中的字段中的矩阵. 那真是漫长的缠绕...让我解释一下: 我有一个定义如下的matlab结构: ...
- MATLAB教学_06进阶绘图
本文学习视频:https://www.bilibili.com/video/av68228488?p=6 本文学习内容: 进阶2D绘图 绘图空间 3D绘图 semilogx(x,y); %x轴取对数 ...
- matlab 全1矩阵,matlab全为1的矩阵
生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n) 生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n) 生成一个主对角线全为 1 的 m 行 n 列 ...
- MATLAB主窗口中 主菜单栏有,Matlab介绍与基本操作.ppt
Matlab介绍与基本操作 MATLAB介绍与基本操作 数学软件与Matlab的关系 国际上最常用的三种数学类科技应用软件为:3M Matlab Mathematica Maple P.S:还有Mat ...
最新文章
- Android异步处理三:Handler+Looper+MessageQueue深入详解
- MapInfo开发心得——控件篇【转】
- java 取得日期_java-如何从某个日期获取日期列表?
- JavaScript面向对象——深入理解原型继承
- Oracle查询所有序列
- Java 中的日期与时间
- 第一次写CSDN的博客
- 移动端测试===adb shell top命令解释
- wordpress直接处理$_post_实战:Drupal迁移到WordPress
- jira状态评审未通过后 不能修改_去年职称申报未通过,今年再报名的,这些变化需要注意了...
- open jdk 证书 问题
- 我的世界 Java1.12.2联机下载_我的世界1.12.2
- 无法在linux下启用ttysac0串口 终端只打印信息,启动出现mmc0: error -110 whilst initialising SD card该如何解决?...
- 模板文件如何调用php函数,模板文件调用方法与路径
- 你的独立思考能力正在慢慢退化
- linux 查看磁盘寿命,如何确定Linux下SSD的写周期数或预期寿命?
- 移动硬盘显示设备未就绪的文件寻回方法
- 从mpeg ts文件中提取I帧(3):pes包的解析
- Coding.net代码托管空间申请与使用
- 如何在Python中进行换行(换行)?