
Matlab学习笔记
matlab学习过程做的笔记
今天你发际线后移了嘛
一起进步
展开
-
matlab画图常用函数image、imagesc、imshow区别
1、image函数从数组显示图像,直接把矩阵中的值当作索引值(称为直接映射),即数值1对应RGB1,数值2对应于RGB2,当小于1或大于64时表现为两端的颜色。语法1:image(c), 会将数组 C 中的数据显示为图像,C 的每个元素指定图像的 1 个像素的颜色。案例1:>> N=randi([0,255],6,6) %产生随机矩阵N = 177 195 181 30 192 140 81 203 193 127 65原创 2022-05-21 22:49:53 · 18022 阅读 · 1 评论 -
数据读取的常见函数以及区别(fopen、open、textscan、fwrite、fread函数)
matlab中fopen、open、textscan、fwrite、fread函数原创 2022-05-17 22:52:04 · 2557 阅读 · 0 评论 -
元胞数组与struct结构体
1、元胞数组元胞数组(cell)是数组的一种,其内部元素可以属于不同的数据类型,元胞数组可看作一个大的盒子,里面有很多的小格子,就是一个个元胞,每个元胞中可存放的数据类型不受限制。注意:描述元胞数组第几个元胞用{ },顺序从左往右,从上往下案例:先创建一个空的元胞数组,再对每个元胞的内容赋值。可以发现,每个元胞可存放的数据类型不受限制。2、结构体类似于excel表格,struct结构体按照中依次输入 字段、值,字段、值,字段、值…。案例1:案例2:若某一字段下需要输入多个值,需要用{原创 2022-05-18 16:52:49 · 1385 阅读 · 0 评论 -
rand、randn和randi的区别
1、rand生成均匀分布的伪随机数,分布在(0,1)之间2、randn生成的伪随机数服从正态分布3、randi生成均匀分布的、指定范围的伪随机数。案例1:生成(0,1)范围服从正态分布的3行4列矩阵案例2:生成5行5列服从正态分布的矩阵(每次随机的结果都不一样)案例3:生成范围在[1,100]的10行5列均匀分布随机矩阵。...原创 2022-05-18 11:34:35 · 6820 阅读 · 0 评论 -
投影坐标系、大地坐标系(地理坐标系)
坐标系我一直很迷,就慢慢记录成长吧。– 我国规定1:1万、1:2.5万、1:5万、1:10万、1:25万、1:50万比例尺的地形图均采用高斯克吕格投影(横轴等角切圆柱投影);特点:<1>离中央子午线越远,变形越大;中央子午线无变形;<2>无角度变形,长度和面积变形小;<3>同一条经线上,纬度越低,变形越大,最大值在赤道上。1:100万采用兰伯特投影(正轴等角割圆锥投影);特点:最适合中纬度的一种投影;海上小于50万的地图用墨卡托投影(正轴等角圆柱投影);原创 2020-12-10 21:40:04 · 3482 阅读 · 0 评论 -
Matlab中肉眼看到的灰色图像不一定是灰度图以及出现的错误
1、我一直以为肉眼看到的图是灰色,那就是灰度图。其实不是,判别图像是彩色图像还是灰度图的判别方法如下:比如下面这个img和imgB都是彩色图像为什么会考虑到这个问题呢?是因为不考虑的话会出现这样的问题,imshow之后输入是一张图,结果却输出三张连在一起的图像,如下:otsu双阈值处理后的结果图:解决办法:将彩色图像转换为灰度图像imgB=rgb2gray(img); %转为灰度图结果如下:...原创 2020-12-26 20:46:50 · 947 阅读 · 0 评论 -
数学符号(取底、取顶、不大于、不小于)和标准假彩色合成
1、什么是标准假彩色合成?近红外波段赋予红,将红波段赋予绿,将绿波段赋予蓝。标准假彩色合成的影像有利于实现对影像中的植被增强。原创 2021-01-16 19:31:38 · 9371 阅读 · 0 评论 -
图像分块如何生成新变量?如何将struct结构体中的double型数据提取出来,并生成新的变量?
关于图像分块的文章:https://langbin.blog.youkuaiyun.com/article/details/45581007由于使用eval函数进行图像分块时想要生成新的变量而不是生成新的文件,只需要将这行代码进行更改。原代码:更改后:但生成的m1,m2,m3,…变量数据类型是struct,不便于后续处理于是将struct结构体中的double型数据提取出来,并生成新的变量的方法,针对上述代码,应该是:参考网站:https://zhidao.baidu.com/question/17原创 2021-03-08 12:47:36 · 607 阅读 · 0 评论 -
Matlab常用的输出命令disp、fprintf
Matlab常用的输出命令:1、disp方法(1)方法(2)方法(3)需要注意:直接加数字不会显示数字,num2str()使数值转换为字符串类型2、fprintf(1)此处的%4.2是指数字有效长度为4位,保留小数点后两位,f是数字类型位浮点型,\n是输出换行。当输出两个结果时如下:...原创 2021-03-09 09:02:05 · 17254 阅读 · 0 评论 -
二维图像旋转的坐标公式推导
二维图像旋转后的坐标公式推导:关于图像旋转算法原理可以参照网站:https://blog.youkuaiyun.com/liyuan02/article/details/6750828原创 2021-03-10 16:22:32 · 3669 阅读 · 0 评论 -
MATLAB多个for循环嵌套的执行顺序、如何将生成的数据存放在一个向量或矩阵里?
MATLAB中多个for循环嵌套的执行顺序:当有两个for循环时,先执行一次外部for循环,再将内部循环全部执行。当有三个for循环时,先执行一次最外部for循环,再执行一次第二层for循环,最后执行全部的第三层for循环。执行结果如下:如何将生成的数据存放在一个向量或矩阵里?参考网站:MATLAB多个for循环嵌套的执行顺序https://blog.youkuaiyun.com/qq_39912914/article/details/102508987https://bbs.youkuaiyun.com/t原创 2021-03-20 10:42:42 · 22802 阅读 · 0 评论 -
pause、who、whos命令,Matlab中存储实数的形式总结,format两个命令
1、pause()命令在命令行窗口输入pause(10)可以让Matlab暂停运行10秒,左下角显示正忙,两个大于号的提示符没有了,再输入命令时Matlab不运行,等时间到了再运行。若想停止pause的操作,按cltr+c,pause命令失效2、who:输出所有的变量名whos:输出所有的变量名及相关的信息3、Matlab中存储实数的形式:双精度:double(可显示16位,8byte)、单精度:single(8位,4byte)、整数:(1)带符号(正负);(2)不带符号总结如下:原创 2021-03-21 18:44:33 · 3364 阅读 · 0 评论 -
虚数、正负无穷和NAN、随机数和随机因子、字符和字符串
1、虚数在matlab中用i(或j)来定义虚数部分,但有时候for循环定义变量时会占用这个字母,此时定义虚数的方法是在i(或j)前面加上数字2、正无穷:inf,1/0负无穷:-inf;-1/0NAN:不是一个数(not a number);0/0这三种类型在Matlab里存储为double型数据,可直接通过赋值,如x=NAN;3、随机数和随机因子如果设置了随机因子,则生成的随机数也就不是随机了,而是一个数列。rand()产生随机数的原理就是,里面有一个震荡非常快的函数且无规律,每输入一个原创 2021-03-21 21:29:59 · 1562 阅读 · 0 评论 -
xor命令,运算优先级,Matlab计算规则(从左至右),舍入误差,取整函数、求余函数和符号函数,mod和rem的区别
1、xor()括号里的两个命令当且仅当只有一个逻辑运算正确的时候,返回逻辑值为1。2、运算优先级。容易错的有:逻辑运算在加减法后面,负号运算在幂次后面。3、Matlab中在进行计算时,是从左到右进行的。下面给出例子。所以10>5>2的正确写法应该为:10>5&&5>24、关于Matlab中的舍入误差本来左右等式应该是相等的,但由于舍入误差,使两个式子产生了微小的偏差。对于舍入误差在Matlab中的解决办法,通常是:判断两个数的差的绝对值,若小于原创 2021-03-22 09:25:22 · 3836 阅读 · 1 评论 -
开根函数、角度转弧度、对数和指数函数、数组定义、等差、等比数列,如何给矩阵中某几个元素赋值或访问某个或多个值
1、开根函数,nthroot(a,b)中的a是要开根的数,b是指开几次根2、角度与弧度的转换3、对数和指数函数4、在matlab中,矩阵可看作二位数组,向量看作一维数组。下面是关于数组定义的几种方法,以及等差数列和等比数列的生成方法5、x([ 5 3 1])指的是返回x的第5个、第三个、第一个的数值x(end)返回x的最后一个数x(2:end)返回x从第二个到最后一个数因此可以根据矩阵的位置对其进行赋值...原创 2021-03-22 10:57:57 · 340 阅读 · 0 评论 -
转置和共轭转置,如何给矩阵对角线、次对角线的元素赋值?向量和矩阵赋值的区别
1、转置和共轭转置2、单位矩阵、零矩阵、元素全为1的矩阵3、如何给矩阵对角线、次对角线的元素赋值?4、给向量和矩阵赋值的区别:当赋值的是一维数组时,左右元素个数相同即可。当赋值的是二维数组时,左右元素需要维度一致。但是可直接赋相同的值。...原创 2021-03-22 12:14:00 · 3302 阅读 · 0 评论 -
length、size、numel函数;矩阵与0相乘的风险(如何让已知矩阵的所有元素变为0?)、reshape、矩阵或向量的翻转、矩阵的重复(复制)
1、length()返回行列号较大那一个;size()返回行列号[row,col]=size()返回两个值row和col,分别为行列号。numel()求矩阵的元素个数2、矩阵与0相乘的风险//如何让已知矩阵的所有元素变为0?3、reshape()的使用:4、矩阵或向量的翻转:5、矩阵的重复(复制)...原创 2021-03-22 15:55:31 · 162 阅读 · 0 评论 -
掷骰子随机生成一个数并将所有数据记录下来、diff、prod、cumsum、cumprod、cummin、cummax函数的使用、在matlab中如何创建一个三维数组?
1、掷骰子随机生成一个数并将所有数据记录下来2、diff()函数3、矩阵的乘法和除法(1)对应元素之间进行运算:4、在matlab中如何创建一个三维数组?查看size为2*4 *2,三维可根据下面这个图理解三维数组:5、prod()、cumsum、cumprod、cummin、cummax函数的使用对于矩阵,min,max函数的运用...原创 2021-03-23 14:43:39 · 708 阅读 · 0 评论 -
逻辑向量,any、all、isequal函数用法
1、逻辑向量若不是逻辑值进行判断,进行下述操作:2、any、all、isequal函数的用法判断两矩阵是否相同,不仅对应数字要相等,维度也要一致3、find:可以找到逻辑真的位置4、如何删掉数组中的负值?里面有两种方法:a(find(a<0))=[]; %找位置a(a<0)=[] %用逻辑值 这个效率更高5、如何求0到1转换的位置和次数?求任意两个数字之间的转换次数:...原创 2021-03-23 17:32:12 · 550 阅读 · 0 评论 -
&&和&的区别、eval()函数的功能有哪些?如何批量计算矩阵中每个列向量的标准差?
1、&&和&的区别&用于数组之间标量之间可用&&或&2、eval()函数的功能:(1)将括号内的字符串视为语句并运行,比如:eval(‘y1=sin(2)’)和语句y1=sin(2)等价(2)可以批量生成变量,多在循环中使用,可以对多个名字有规则的变量或文件进行操作,比如:for x=1:5eval([‘y’,num2str(x),’=’,num2str(x^2),’;’])end参考网站:https://zhidao.baidu原创 2021-03-24 16:59:02 · 449 阅读 · 0 评论 -
常见的矩阵函数:单位矩阵、零矩阵、元素全为1的矩阵、逻辑矩阵、帕斯卡pascal矩阵、希尔伯特hilb矩阵、魔方magic矩阵
1、单位矩阵、零矩阵、元素全为1的矩阵若想生成为逻辑变量的矩阵,如下:2、帕斯卡pascal矩阵、希尔伯特hilb矩阵、魔方magic矩阵Pascal矩阵的第一行元素和第一列元素都为1,其余位置处的元素是该元素的左边元素加上同列中上一行的元素。希尔伯特矩阵是正定矩阵魔方矩阵就是矩阵的行、列、对角线之和都相等...原创 2021-03-24 17:18:33 · 12711 阅读 · 0 评论 -
矩阵、向量之间的乘法和除法,如何求向量的内积、叉积?
1、矩阵的乘法和除法(1)点乘、点除…是对应元素之间进行运算:(2)两矩阵之间的乘法,直接用*即可,但要求第一个矩阵的列数等于第二个矩阵的行数。2、向量之间的乘法和除法点乘:对应元素相乘若想求两个向量的内积,有3种常用方法:(1)sum(a.*b)(2) a * b’(3)dot(a,b)向量之间的叉积:cross(a,b),a,b向量中必须含有三个元素。实际的计算公式如下(只是为了便于理解)...原创 2021-03-24 17:25:30 · 4365 阅读 · 0 评论 -
关于find函数的使用,如何删掉数组中的负值?求任意两个数字之间的转换次数?如何在矩阵中找到某个元素的行数和列数?(ind2sub函数的用法)
1、find:可以找到逻辑真的位置2、如何删掉数组中的负值?里面有两种方法:a(find(a<0))=[]; %找位置a(a<0)=[] %用逻辑值 这个效率更高3、如何求0到1转换的位置和次数?4、求任意两个数字之间的转换次数:5、如何在矩阵中找到某个元素的行数和列数,而不是它的序号。ind2sub函数的用法...原创 2021-03-24 17:38:10 · 526 阅读 · 0 评论 -
明明看到矩阵(向量)里某个数小于界定的数,但是用find返回不到对应的位置
我的x0矩阵是这样的,显然第一个元素小于1。当我用命令:x0(find(x0)<1)=1;x0中的第一个元素并没有赋值成为1经过网上查询,将语句改为:x0(x0<1)=1; 赋值成功。以上可能跟 find函数的舍入误差相关,find函数更适合用于整数之间的判断。...原创 2021-03-25 18:07:15 · 198 阅读 · 0 评论 -
关于Matlab中元胞数组{}与()的区别
下文的seg元胞是一个1616的元胞数组,每个元胞数组中存储着3232double型数据{}与()的区别:()是获取的元胞数据{}直接获取元胞里包含的数据原创 2021-03-25 22:17:35 · 514 阅读 · 0 评论 -
Matlab中如何生成a=A1,A2,A3,...A100这样有规律的变量?
如何生成a=A1,A2,A3,…A100这样有规律的变量?按上述代码生成的C为元胞数组,每个元素分别为A1,A2,A3,。。。sprintf函数像是一个输出函数,能设置输出类型,并将输出值赋给变量,功能强大,sprintf函数参考:https://blog.youkuaiyun.com/jk_101/article/details/106492643若让c=[];而不是元胞数组,则生成的变量没有分开,且c为字符型若是用于循环中,可以按照下列命令,则a每次就会被赋值为m1,m2,m3,…上述参考网站:ht原创 2021-03-27 20:37:37 · 3844 阅读 · 1 评论 -
imadjust函数的注意事项,以及如何将灰度图像0到255的范围转化到0到1的范围?灰度转换
1、imadjust函数的注意事项关于imadjust函数的使用方法,最常见的一种用法:但如果用这个函数变换图像的灰度范围时,需要注意:[low_in high_in],[low_out,high_out]的两个区间的范围必须在0到1之间。对于满足以上要求的图像,可以通过max,min命令找到图像的灰度范围。我企图将0到255转换到0到1,发现该函数不行。2、如何将灰度图像0到255的范围转化到0到1的范围?我在读入文件后,分别采用了两种方法进行灰度转换,得到了data和data2两个数据,原创 2021-03-27 22:14:17 · 5719 阅读 · 0 评论 -
添加注释、输入函数input的使用方法
1、添加注释的另一种方法:用花括号括起来2、输入函数input的使用方法如何限制输入变量的类型?下面介绍关于输入字符串类型的两种常用方法:char字符串–单引号如何输入string 变量?–用双引号...原创 2021-03-29 14:29:42 · 416 阅读 · 0 评论 -
syms函数、如何让一个向量的所有值减去另一个向量的所有值?
1、syms函数:定义符号变量作用:(1)可用来求导(2)相当于列方程前,必须设未知数x是一个道理(3)syms x代表着声明符号变量x,只有声明了符号变量才可以进行符号运算。syms可以定义变量范围:定义多个有规律的syms变量的方法:2、如何让一个向量的所有值减去另一个向量的所有值,不是一 一对应的减。得到的A变量如下:参考网站:https://tieba.baidu.com/p/5087210188?red_tag=3279359011...原创 2021-03-29 22:00:44 · 2318 阅读 · 0 评论 -
matlab中如何去掉相同的(重复的)坐标?
若有两个向量,分别代表x,y坐标:x=[1 4 2 7 2 7 5];y=[2 3 5 6 5 6 9] ;想要去掉其中重复的两个点,(2,5)、(7,6)则可以执行下面代码:原创 2021-03-30 10:55:37 · 3523 阅读 · 0 评论 -
matlab中如何输入特殊字符
转载:https://www.cnblogs.com/vigorz/p/10499185.html下标用 _(下划线)希腊字母等特殊字符用 \加拼音 如α \alphaβ \betaγ \gammaθ \thetaΘ \ThetaГ \Gammaδ \deltaΔ \Deltaξ \xiΞ \Xiη \eltaε \epsilongζ \zetaμ \miuυ \nuτ \tauλ \lamda∧ \Lamdaπ \pi∏ \Piσ \sigma∑ \Sigm原创 2021-04-06 10:52:02 · 3471 阅读 · 0 评论 -
matlab中的plot函数
一、画点1、用plot画图,按f5运行关于点被标记出的形式有以下几种:s是方形、d是菱形、v是下三角、^是上三角、p是五角形、h是六角形2、更改坐标轴范围3、给x,y轴加上标题4、给整个图加标题2、画线1、输入x,y变量画线若只输入一个变量,则matlab默认输入的数据为纵坐标,并给输入的数据匹配的横坐标为1,2,3,4,…因此对于下面的代码,即使只输入了y,直接plot(y),得到的结果相同。关于plot画线常用的颜色如下:m是品红色、c是青蓝色关于plo原创 2021-04-07 20:49:29 · 944 阅读 · 0 评论 -
关于Matlab中双线性插值的理解
1、双线性插值的原理就是根据:已知两点可以求出直线方程,因此可以求出直线中任意一点;同样在另一条线上可以内插出另一个点;再根据以上求出的两点求直线方程,内插出所要求得的点。2、若在matlab中实现双线性插值,则需要注意:上述公式的x,y坐标的范围为负无穷到正无穷,可为小数。而对图像双线性插值时,只能为正整数,且不能超过图像的数组范围。因此,需要将求得的x,y坐标转换到图像坐标中,参考我的另一篇博客:二维图像旋转的坐标公式推导。(需要注意的是,图像坐标转换后,图像中的线的角度没有发生变化。)原创 2021-04-09 10:20:52 · 2047 阅读 · 0 评论 -
Matlab中关于argmax、argmin函数的使用
1、在matlab的现有函数中,并没有argmax,argmin函数可以直接调用,要根据这两个函数的实际意义,自己编写程序进行计算2、我要求解的函数是下式:其中mad(theta)和amd(theta)两个均为111的double型向量括号里得到一个111的向量关于argmax函数的意思是: argmax(f(x))是使得 f(x)取得最大值所对应的变量x。也就是求出f(x)的最大值,返回使f(x)最大的自变量x。因此我编了以下代码:就是将函数结果以及自变量放在同一个矩阵,并上下一 一对照,原创 2021-04-15 09:35:59 · 14881 阅读 · 7 评论 -
matlab中如何检测极大值和极小值?
Matlab中sign函数:Matlab中已知自变量和因变量,怎么求极大值和极小值?若diff(y)<0时,sign(diff(y))=-1,要想让y点为极大值,前面diff(y)要大于0,sign(diff(y))=1,也就是前后异号。第二次diff等于-1-1=-2。因此代码如下,也可直接find(diff(sign(diff(y)))==-2)。indmax=find(diff(sign(diff(y)))<0)+1diff(y)可以看作这一点的导数值,大于0递增(记为1),原创 2021-04-22 21:08:05 · 8496 阅读 · 0 评论 -
Matlab中数据读取方式,如何读取给定行列号的矩阵(多个位置)的灰度值?
假设我有一个影像的灰度矩阵为x,其中aa,bb分别是想要获取的x矩阵灰度值的行列号。我的目的是:依次获取x矩阵的3行5列,4行4列,5行1列,1行9列,6行3列,5行6列,…处的灰度值,如下:如果我直接输入:x(aa,bb)获得的结果是:显然不是我想要的结果,想要的结果应该和aa,bb的维数相同,也是一个4*4的矩阵。我改良的方法是:reshape(diag(x(aa,bb)),4,4)但是对于以上方法,当aa,bb的维数过大时,会报错,因为matlab能数组大小是有限的。需要说明的是原创 2021-04-28 22:15:26 · 936 阅读 · 0 评论 -
matlab中plot函数如何在图像上标记某些点?
假设我的图像如下,我想用plot函数标记几个点,代码如下:plot(4,8,'ro','MarkerSize',5); plot(6,1,'ro','MarkerSize',5);得到的结果图放大局部后,如下:可以看到,输入的两个坐标分别为(4,8)、(6,1),被标记的结果为上图,也就是plot在图像上标记时的坐标系是图像坐标系, 并没有按照行列号标记,因为图像行列号的坐标系与图像坐标系不同。...原创 2021-05-08 22:32:42 · 23175 阅读 · 0 评论 -
Matlab中求解总体标准差和样本标准差的区别(std函数)
Matlab中求std函数求标准差:(1)式是总体标准差,(2)式是样本标准差Std(A,flag)中:flag表示标注公差时是要除以n还是n-1flag0…是除以n-1,总体标准差flag1…是除以n,样本标准差std(A,flag,dim)dim表示维数dim1…是按照列计算dim2…是按照行计算若是三维的矩阵,dim==3就按照第三维来分数据默认std格式是std(x,0,1),也就是直接std(A)得到的是按列求A的总体标准差...原创 2021-05-18 21:41:56 · 4972 阅读 · 6 评论 -
matlab中imcrop函数的具体使用
I=imread(‘图像名字(带扩展名及路径)’);%首先读入一幅待裁剪的图像I2=imcrop(I,[a b c d]);%利用裁剪函数裁剪图像,其中,(a,b)表示裁剪后左上角像素在原图像中的位置;c表示裁剪后图像的宽,d表示裁剪后图像的高关于矩形区域[Xmin Ymin Width Height],Xmin是横向第Xmin个像素,Ymin是纵向第Ymin个像素;以上介绍的原文链接:https://blog.youkuaiyun.com/u010603798/article/details/38681939原创 2021-05-18 22:23:35 · 5043 阅读 · 0 评论