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



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


%% 独占一行的注释% 普通注释 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只能指定维度。
元胞数组:是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运行
>> 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>> 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>> 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
>> 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


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');
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,是相对使用的。
如果直接用截图的方式截取matlab生成的图像,会影响图像的清晰度。因此我们建议:可以用如下方法保存与导出图形。
1)如图

2)编辑→复制选项
可调节相应元素

3)编辑→图窗属性

4)文件→导出设置

通过调节宽度、高度等像素值属性,可以让图片即使很小,文字依然清晰。
Matlab基础的部分到这就结束了,下面作一点补充~
[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)