
一、界面认识预设→字体 可调整字体字号没有当前文件夹和工作区就点击布局选择“文件夹”和“工作区”编写程序时通常会拷贝一份文件夹意思是这个是你保存编辑好的文件的一个快捷路径 不用你在那里找你要把文件放在哪里命令行窗口是直接与使用者交互的新建→脚本 即可出现编译器Ctrl S键 可以保存脚本脚本的命名方式与MATLAB变量的命名规则类似。二、变量命名和数据类型编辑器中的注释 两个百分号空格 可以出现横线 %%对于其他的注释只写一个百分号%即可I. 清空环境变量及命令clear all % 清除 Workspace 中的所有变量clc % 清除 Command Window 中的所有命令II. 变量命令规则1. 变量名区分大小写A 2 a 32. 变量名长度不超过 63 位ABCDEFGHIJKLMNOPQRSTUVWXYZ123456ABCDEFGHIJKLMNOPQRSTUVWXYZ123456 33. 变量名以字母开头可以由字母、数字和下划线组成但不能使用标点%3A 4%.a 5%/b 5a_2 3% a.2 44. 变量名应简洁明了通过变量名可以直观看出变量所表示的物理意义A rand(3,5)rows size(A, 1)III. MATLAB数据类型1. 数字2 410 - 73 * 58 / 22. 字符与字符串s aabs(s) %ASCII码char(65) %char是字符str是字符串num2str(65) %number to string数字转换为字符串str I Love MATLAB Machine Learning.length(str) % 计算字符串长度空格也算字符串用单引号引用引号内的内容不需要计算机理解直接输出即可3. 矩阵A [1 2 3; 4 5 2; 3 2 7; 4 6 8] %用空格分开用分号换行B A %转置C A(:) %竖向拉长矩阵D inv(A) %求逆非方阵无法求逆A * D %矩阵乘矩阵的逆为单位阵E zeros(10, 5, 3) %10行5列3维全零矩阵E(:, :, 1) rand(10, 5)E(:, :, 2) randi(5, 10, 5) %randi是整数E(:, :, 3) randn(10, 5) %randn是正态分布有正有负因为生成的是标准正态分布的随机数有正有负才能保证期望为 04. 元胞数组A cell(1, 6) %1行6列A{2} eye(3) %eye(n)生成n*n 对角线数值为1的单位矩阵放入第二个“盒子”中%索引 C语言从0开始MATLAB从1开始A{5} magic(5) %幻方B A{5}5. 结构体相当于Python语言中的字典books struct(name,{{Machine Learning,Data Mining}},price,[30 40])%创建一个结构体数组 books包含两个字段% name 字段元胞数组存放两本书名 Machine Learning、Data Mining% price 字段数值数组对应价格30、40 最终得到 1×2 的结构体数组books(1)、books(2)books.name %在 books 中选择 name 属性books.name(1) %圆括号 ()取元胞返回的还是元胞类型books.name{1} %大括号 {}取元胞里面的内容直接取出里面的字符向量字符串三、矩阵构造和四则运算IV. MATLAB矩阵操作1. 矩阵的定义与构造A [1 2 3 5 8 5 4 6]%手动创建行向量1 行 8 列直接把数字写在方括号里空格用来分隔同一行元素B 1:2:9%冒号表达式格式起始:步长:终点 步长不可省略不写%从 1 开始每次 2直到不超过 9C repmat(B, 3, 1)% repmat(矩阵,重复行数,重复列数)复制平铺矩阵%把向量 B 在垂直方向复制 3 份横向复制 1 份得到 3 行 5 列矩阵D ones(2, 4)% ones(m, n)生成全部元素为 1 的 m 行 n 列矩阵%这里生成 2 行 4 列、所有值都是 1 的矩阵。2. 矩阵的四则运算A [1 2 3 4; 5 6 7 8]%定义矩阵 A;换行得到2 行 4 列矩阵B [1 1 2 2; 2 2 1 1]%定义矩阵 B同样是2 行 4 列矩阵C A B%矩阵加法两个同型矩阵对应位置元素相加要求 A、B 行列数完全一致D A - B%矩阵减法同型矩阵对应位置元素相减E A * B% B B 的转置2×4 → 4×2% * 数学上标准矩阵乘法不是对应元素相乘% A 是 2×4B 转置后 4×2相乘结果 E 是 2×2 矩阵遵循矩阵乘法规则。F A .* B%点乘元素乘.是关键%A 和 B 同维度对应项相乘对应位置的数字一对一相乘和矩阵乘法完全不同G A / B% G * B A G * B * pinv(B) A * pinv(B) G A * pinv(B)相当于a乘b的逆%矩阵右除等价于G A * pinv(B)A 乘以 B 的伪逆 含义求 G 使得 G * B ≈ A常用于最小二乘求解B 不一定是方阵、不一定可逆。H A ./ B%点除元素除%同型矩阵对应位置元素一对一相除3. 矩阵的下标A magic(5)%magic(n)生成n 阶幻方矩阵每行、每列、两条对角线元素之和都相等。%这里生成 5×5 幻方矩阵 AB A(2, 3)%A (行号列号)取出矩阵 A 中第 2 行、第 3 列的单个元素赋值给 BC A(3, :)%:代表该维度全部元素。% A(3, :)取出 A 的第 3 行的所有列得到一行向量D A(:, 4)% A(:, 4)取出 A 的第 4 列的所有行得到一列向量[m, n] find(A 20)%找大于20的序号值/矩阵% A 20逻辑判断生成和 A 一样大小的逻辑矩阵满足 20 的位置标记为 true(1)其余false(0)% find()找到逻辑值为 true 的位置输出对应的行下标 m、列下标 n%m、n 是一一对应的向量m(k) 和 n(k) 共同表示一个满足条件元素的坐标四、程序结构1.顺序结构2.循环结构【注】循环结构在做相加/求和问题的时候需要赋初值例sum 0;3.分支结构五、二维平面绘图绘图一定要有初始值x 0:0.01:2*pi; %冒号生成向量x 从 0 到\(2\pi\)步长 0.01是绘图的横坐标采样点 y sin(x); %计算每个 x 对应的正弦值得到纵坐标 y figure %新建一个空白绘图窗口防止新图覆盖之前的图 plot(x, y) %二维绘图以 x 为横坐标、y 为纵坐标画出曲线 title(y sin(x)) %给图像添加标题y sin(x) xlabel(x) %给 x 轴添加标签 x ylabel(sin(x)) %给 y 轴添加标签 sin(x) xlim([0 2*pi]) %限定 x 轴的显示范围0 ~ 2π x 0:0.01:20; %重新生成一组横坐标0 到 20步长 0.01 y1 200*exp(-0.05*x).*sin(x); %计算衰减正弦信号y_1200e^{-0.05x}\sin(x) %⚠️ .* 是点乘必须写exp 结果和 sin 结果都是向按量元素之间逐个相乘。 x 0:0.01:20; %生成横坐标向量从 0 到 20步长 0.01。 y1 200*exp(-0.05*x).*sin(x); %慢衰减振荡信号y_1200e^{-0.05x}\sin(x)衰减系数小衰减慢。 y2 0.8*exp(-0.5*x).*sin(10*x); %快衰减高频振荡信号y_20.8e^{-0.5x}\sin(10x)衰减系数大衰减快振荡频率更高。 %⚠️ .*向量之间元素逐个相乘不能直接写* figure %新建绘图窗口。 [AX, H1, H2] plotyy(x, y1, x, y2, plot); %plotyy双 y 轴绘图左右两个纵坐标共用同一个 x 轴 % · AX两个坐标轴的句柄AX(1)是左侧 y 轴AX(2)是右侧 y 轴 % · H1y1 曲线的句柄H2y2 曲线的句柄 % · plot 指定使用 plot 方式画线 set(get(AX(1),Ylabel),String,Slow Decay) %给左侧 y 轴设置标签文字Slow Decay慢衰减 set(get(AX(2),Ylabel),String,Fast Decay) %给右侧 y 轴设置标签文字Fast Decay快衰减 xlabel(Time (\musec)) %x 轴标签Time (μs微秒)\musec是 LaTeX 格式代表微秒符号 μ。 title(Multiple Decay Rates) %图像标题Multiple Decay Rates多种衰减速率 set(H1,LineStyle,--) %修改 y1 曲线线型-- 虚线 set(H2,LineStyle,:) %修改 y2 曲线线型: 点线【注意】新版本 MATLAB 推荐用 yyaxis left / yyaxis right 代替 plotyyplotyy 属于偏旧的函数。% 新版 yyaxis 写法推荐R2016a及以上版本支持替代旧版plotyy x 0:0.01:20; y1 200*exp(-0.05*x).*sin(x); y2 0.8*exp(-0.5*x).*sin(10*x); figure yyaxis left % 激活左侧Y轴 plot(x, y1, --) % y1使用虚线 -- ylabel(Slow Decay) yyaxis right % 激活右侧Y轴 plot(x, y2, :) % y2使用点线 : ylabel(Fast Decay) xlabel(Time (\musec)) title(Multiple Decay Rates)六、三维立体绘图t 0:pi/50:10*pi; %生成参数向量 t从 0 到 10π步长 π/50是螺旋线的参数。 plot3(sin(t), cos(t), t) %plot3三维曲线绘图函数分别是 x、y、z 三个方向坐标 % x sin(t), y cos(t), zt画出一条空间螺旋线圆柱螺旋线。 xlabel(sin(t)) %给 X 轴添加标签 sin(t) ylabel(cos(t)) %给 Y 轴添加标签 cos(t) zlabel(t) %给 Z 轴添加标签 t三维图独有的 z 轴标注 grid on %打开图像网格线方便观察三维坐标。 axis square %设置坐标轴的外框为正方形让画面比例更协调注意不是 xyz 等长axis equal才是三轴等比例。【注意】axis square画布框是正方形坐标轴比例不变axis equalx/y/z 三个轴单位长度一致螺旋看起来不会被压扁【补充】hold on保持当前画布新画的图不擦掉旧图多张曲线叠在同一张图里默认情况下每次调用 plot / plot3都会清空图窗用新曲线替换原来的。 写了 hold on 之后后续绘图命令叠加在这张图上。x 0:0.01:2*pi; plot(x,sin(x)); hold on % 开启叠加 plot(x,cos(x));% cos曲线画在刚才sin的同一张图上hold off关闭叠加模式下一次绘图会清空画布覆盖之前所有图形MATLAB 默认状态就是 hold offhold off plot(x,tan(x)); % 这一句会把图上sin、cos全部清掉只画tan七、论文的图形导出图形的保存与导出(1) Edit → Copy Figure %编辑→复制图窗编辑→复制选项 可调节相应的元素编辑→图窗属性(2) Toolbar → Save %文件→另存为→保存(3) print(-depsc,-tiff,-r300,picture1)(4) File → Export Setup %文件→导出设置设置好宽度和高度后点击“应用于图形”然后再 编辑→复制图窗【补】子图绘制——图形窗口的分割