许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB基础知识回顾:核心语法与操作

MATLAB基础知识回顾:核心语法与操作

阅读数 6
点赞 0
article_banner


语句后⾯加;的作⽤是:程序运⾏时不在命令⾏窗⼝显⽰改⾏的运算结果。 format compact:%输出行间距设置为紧凑模式 format loose:%恢复到默认的松散模式 需要注意的是,format 函数的设置只会影响当前 MATLAB 会话中的输出行间距,不会改变实际的数据或变量。此外,该设置对于图形和其他非命令行的输出可能没有影响。

1.帮助命令

例如,如果想使⽤某个与关键字 inverse 有关的函数,可以使⽤下⾯的代码进⾏查找:


2.数据类型

%% 独占一行的注释% 普通注释 clear all	删除所有变量clc	删除命令行窗口内容 变量命名规则:区分大小写;长度不超过63 10/3=3.3333     /是真除法   abs('a')  %输出97 单引号表示字符abs('ab') %输出97 98char(97) %输出'a'num2str(97) %输出'a' length('adjkasnjfka') #输出的是字符串长度 A=[1 2 3;4 5 6;7 8 9]  %定义矩阵B=A'    %转置C = A(:) %竖向拉长 D = inv(A) %逆矩阵(必须时方阵才能求逆矩阵)A * D (相当于A×A的逆)在MATLAB中,可以使用inv函数或者det函数来判断一个矩阵是否可逆。·inv函数用于计算矩阵的逆。如果一个矩阵是可逆的,inv函数将返回该矩阵的逆矩阵。如果矩阵不可逆(奇异矩阵),inv函数将引发一个异常。·det函数用于计算矩阵的行列式。如果一个矩阵的行列式不等于零,则说明该矩阵是可逆的;如果行列式等于零,则说明该矩阵是不可逆的。 E = zeros(10,5,3) 创建一个10行5列3维的全0矩阵E(:,:,1) = rand(10,5)  %rand生成均匀分布的伪随机数。分布在(0~1)之间rand(m,n,‘double’)生成指定精度的均匀分布的伪随机数,参数还可以是’single’

rand():生成[0,1)的小数 rand(m):生成m X m的方阵,随机小数填充 rand(m,n):生成m X n的矩阵,随机小数填充 rand(m,n,p):生成m X n X p的矩阵,随机小数填充 a+(b-a)*rand():[b,a]区间小数 ‘double’和'single':指定数据类型,放在rand的最后一个参数位置

randi是生成的整数,rand是[0,1]的小数。 randi(iMax):生成[0,iMax]的整数 randi(iMax,m):生成m X m的方阵,数值区间[0,iMax] randi(iMax,m,n):生成m X n的矩阵,数值区间[0,iMax] randi(iMax,m,n,p,...):后面的全部都是维度m X n X p X ... randi([iMin,iMax],m,n):生成m X n的矩阵,数值区间[iMin,iMax]

randn(m):m X m randn(m,n):m X n randn(m,n,p):m X n X p ·只有randi能够指定[iMin,iMax],rand、randn都不可以。 ·randi生成的是整数,rand、randn生成的是小数。 ·randn只能指定维度。

3.元胞数组和结构体

元胞数组:是MATLAB中特有的一种数据类型,是数组的一种,其内部元素可以是属于不同的布局类型,概念理解上,可以认为它和C语言里面的结构体、C++里面的对象很类似。元胞数组是MATLAB中的特色数据类型,它不同于其它数据类型(如字符型,字符数组或者 字符串  ,以及一般的算数数据和数组)。它特有的存取数据方法决定了它的特点,它有给人一种查询信息的感觉,可以逐渐追踪一直到所有的变量全部翻译成基本数据信息。它的class函数输出就是cell(细胞)

元胞数组 A = cell(1,6) %定义 A{2} = eye(3) %2021版本前的matlab下标从1开始 A{5} = magic(5) %魔方:该矩阵无论横、竖还是斜三个方向上的数的和总是相同的 B = A{5}
结构体 注意定义里面是逗号隔开,访问时候用点。 >> books=struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])books = 包含以下字段的 struct: name: {'Machine Learning' 'Data Mining'} price: [30 40] >> books.nameans = 1×2 cell 数组 'Machine Learning' 'Data Mining' >> books.priceans = 30 40 >> books.name(1)ans = cell 'Machine Learning' >> books.name{1}ans =Machine Learning一键获取完整项目代码Matlab运行

4.矩阵操作

4.1 矩阵的定义与构造

>> A=[1,2,3,4,5,6,7,8,9]%直接定义矩阵A =     1     2     3     4     5     6     7     8     9 >> B=1:2:9 %第二个参数为步长,不可缺省,[1,9]包含最后一个数值B =     1     3     5     7     9 >> C = repmat(B,3,2) %重复执行3行2列C =     1     3     5     7     9     1     3     5     7     9     1     3     5     7     9     1     3     5     7     9     1     3     5     7     9     1     3     5     7     9 >> D = ones(2,4) %生成一个2行4列的全1矩阵D =     1     1     1     1     1     1     1     1

4.2 矩阵的四则运算

>> A = [1 2 3 4; 5 6 7 8]A =     1     2     3     4     5     6     7     8>> B = [1 1 2 2; 2 2 1 1]B =     1     1     2     2     2     2     1     1>> C=A+B  %对应位置相加C =     2     3     5     6     7     8     8     9>> C=A*B'  %'是转置符号C =    17    13    41    37>> C=A'*BC =    11    11     7     7    14    14    10    10    17    17    13    13    20    20    16    16  >> AA =     1     2     3     4     5     6     7     8>> BB =     1     1     2     2     2     2     1     1>> A.*B %对应位置相乘ans =     1     2     6     8    10    12     7     8>> A./B %对应位置相除ans =    1.0000    2.0000    1.5000    2.0000    2.5000    3.0000    7.0000    8.0000 >> G = A / B %相当于A*B的逆 G*B = A G*B*pinv(B) = A*pinv(B) G = A*pinv(B),相当于A乘BG =    1.8333   -0.1667    3.1667    1.1667>> A * inv(B)错误使用 inv矩阵必须为方阵。 >> A * pinv(B)  %pinv可以不是方阵ans =    1.8333   -0.1667    3.1667    1.1667

4.3 矩阵的下标

>> A=magic(5)A =    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>> A(2,3) %矩阵坐标从1开始数,访问第二行第二列元素ans =     7>> A(2,:) %访问第二行所有元素ans =    23     5     7    14    16>> A(:,3) %访问第三列所有元素ans =     1     7    13    19    25>> find(A>20) %返回的是大于20的元素的下标,竖着数ans =     2     6    15    19    23>> A(6)ans =    24

5.程序结构

5.1 for循环结构

>> sum=0;>> for i=1:5sum=sum+i*i;end>> sumsum =    55

sum=0;for i=1:5    cur=1;    for j=1:i        cur=cur*j;    end    sum=sum+cur;enddisp(sum); %153

%打印九九乘法表for i=1:9    for j=1:i        a(i,j)=i.*j;    endenddisp(a); >> test01     1     0     0     0     0     0     0     0     0     2     4     0     0     0     0     0     0     0     3     6     9     0     0     0     0     0     0     4     8    12    16     0     0     0     0     0     5    10    15    20    25     0     0     0     0     6    12    18    24    30    36     0     0     0     7    14    21    28    35    42    49     0     0     8    16    24    32    40    48    56    64     0     9    18    27    36    45    54    63    72    81

5.2 分支结构

7.基本绘图操作

7.1.二维平面绘图

x=0:0.01:2*pi;y=sin(x);figure;  %建立一个幕布plot(x,y);title('y=sin(x)');xlabel('x');ylabel('y');xlim([0 2*pi]); %设置x坐标值的范围

在这里插入图片描述

x=0:0.01:20;y1=200*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);figure;[AX,H1,H2]=plotyy(x,y1,x,y2,'plot');%共用一个x的坐标系,在y上有两个不同的取值%设置相应的标签set(get(AX(1),'Ylabel'),'String','Slow Decay');set(get(AX(2),'Ylabel'),'String','Fast Decay');xlabel('Time(\musec)');title('Multiple Decay Rates');set(H1,'LineStyle','--','Color','b');set(H2,'LineStyle',':','Color','k');

6.2 三维立体绘图

t=0:pi/50:10*pi;plot3(sin(t),cos(t),t);xlabel('sin(t)');ylabel('cos(t)');zlabel('t');%hold on %hold off %不保留当前操作grid on;%把图片绘制出来,加一些网格线axis square %使整个图(连同坐标系)呈方块

hold on是当前轴及图像保持而不被刷新,准备接受此后将绘制的图形,多图共存,即启动图形保持功能,当前坐标轴和图形都将保持,从此绘制的图形都将添加在这个图形的基础上,并自动调整坐标轴的范围。 hold off使当前轴及图像不再具备被刷新的性质,新图出现时,取消原图。即关闭图形保持功能。 hold on 和hold off,是相对使用的。

7.图形的保存与导出

如果直接用截图的方式截取matlab生成的图像,会影响图像的清晰度。因此我们建议:可以用如下方法保存与导出图形。

1)如图在这里插入图片描述

在这里插入图片描述

2)编辑→复制选项

可调节相应元素

在这里插入图片描述

3)编辑→图窗属性

在这里插入图片描述

4)文件→导出设置

在这里插入图片描述

通过调节宽度、高度等像素值属性,可以让图片即使很小,文字依然清晰。

Matlab基础的部分到这就结束了,下面作一点补充~

8.补充

[x,y,z] = peaks(30); %peaks命令用于产生双峰函数或者是用双峰函数绘图mesh(x,y,z)grid

>> peaks z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)


相关文章
技术文档
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
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空