无标题
碎碎念
至少熟练掌握四五个模型
自己查资料是可以用ai的
第一节课
作业一
用MATLAB软件保存名画五牛图
错误
相对路径的读取,要加上引号才能表示这是一个路径位置
1
2
3
4obj = VideoReader(input.avi); % 错误:缺少引号,MATLAB寻找名为input的变量
obj = VideoReader('input.avi'); % 正确:用单引号包裹文件名
% 或
obj = VideoReader("input.avi"); % 正确:双引号也可以什么时候是变量读取,什么时候路径读取
原代码用strcat(DIR, ‘.jpg’)拼接路径时,DIR末尾没有\,会导致生成类似G:...\foreground_frames.jpg的错误路径。
改用fullfile(DIR, ‘*.jpg’),MATLAB 会自动根据系统添加正确的分隔符(\或/)。
- 先figure,后imshow。就是先建图框,后显示。这两个代码要挨近放
1
2figure('Name', 'RGB Image')
imshow(ImColor)
选择校园内一个树木,估计树木的重量范围
错误
cos()
函数,后面的角度要用弧度表示。如果不是弧度,要用deg2rad()
函数进行转换
对一个拍摄时间大约5秒的监控视频,利用帧差法提取视频的前景目标
错误
- 在将图片写入视频后要关掉视频,否则无法正常打开
1
2close(videoWriter);
disp(['处理完成,输出文件: ', outputVideoFile]);
作业二
说明Sudoku游戏的建模背景,模型方法,模型算法和软件计算
学习使用intlinprog()函数
注意
\begin{itemize}
是无序列表;\begin{enumerate}
是有序列表A(sub2ind([n n n], i, j, k)) = 1;
sub2ind将三维坐标 (i,j,k) 转换为一维索引
这行代码在向量 A 中对应位置标记 1,表示 “第 i 行第 j 列可以填入数字 k”- 命令行太长,加上
...
再回车 - Display off 是求解过程不显现
- 用latex语法输入
_
,要写成\_
1
2
3%使用intlinprog求解数独谜题
options = optimoptions('intlinprog', 'Display', 'off');
x = iintlinprog(f, 1:N, [], [], Aeq, beq, lb, ub, options); \item
和后面的文字之间要有空格- 对于新函数要会使用帮助文档
说明热传导方程的建模背景,模型方法,模型算法和软件计算
使用有限差分方法
而且热传导模型是非常重要的模型
注意
- 使用有限差分方法时,
稳定性条件
是一个很重要的条件。即是保证alpha * dt / dx^2 < 0.5
始终成立 u(:, 1) = sin(pi * x)';
在 MATLAB 中,代码末尾的撇号 ‘ 表示矩阵转置(共轭转置,对于实数矩阵等价于普通转置)- 绘制图标的代码
1
2
3
4
5
6
7%结果绘图
figure;
mesh(t, x, u); %绘制温度随时间和位置变化的三维图
xlabel('时间 t'); %x轴标签
ylabel('位置 x'); %y轴标签
zlabel('温度 u'); %z轴标签
title('热传导方程的解'); %标签 - 关于有限差分。格式是一阶导数使用前项欧拉格式,二阶使用中心格式
- figure出来的图像,不同使用场景就另存为不同格式
作业三
分类方法——距离分类法与K聚类方法。区别在于是否有督导(即标签)
作业四
- 虽然你安装了 Deep Learning Toolbox 13.0,但是在你的 MATLAB 版本里 patternet 已经不包含了
(它在老版本 Neural Network Toolbox 里是标准函数)。MathWorks
从 2019 年之后逐步用 新接口 (trainNetwork + layers) 取代了这些旧函数(包括 patternet, feedforwardnet, newff 等)。
第二节课
- 图论模型:tsp问题(要么用lingo函数,要么转化为混合整数规划问题的标准型(当点多的时候)),邮递员问题(欧拉图)
- 规划模型:
方法一:基于求解器——适用于简单问题,容易看出系数向量:方法二:(基于问题),适用于所有规划问题1
2
3
4
5
6
7
8
9f = [21 25 7 15 51 51 37 15];
Aeq = [1 1 1 1 0 0 0 0 ;...
0 0 0 0 1 1 1 1;...
1 0 0 0 1 0 0 0;...
0 1 0 0 0 1 0 0;...
0 0 1 0 0 0 1 0;...
0 0 0 1 0 0 0 1];
beq = [2000 1100 1700 1100 200 100];
[sol, fval, exitflag, output] = linprog(f, [], [], Aeq, beq, zero(size(f)))线性规划存在标准型1
2
3
4
5
6
7
8
9
10
11
12
13
14
15x11 = optimvar('x11', 'LowerBound', 0);
x12 = optimvar('x12', 'LowerBound', 0);
x13 = optimvar('x13', 'LowerBound', 0);
x14 = optimvar('x14', 'LowerBound', 0);
x21 = optimvar('x21', 'LowerBound', 0);
x22 = optimvar('x22', 'LowerBound', 0);
x23 = optimvar('x23', 'LowerBound', 0);
x24 = optimvar('x24', 'LowerBound', 0);
prob = optimproblem('Objective', 。。。。);
prob.Constraints.c1 = x11+ x22 == 1234
prob.Constraints.c2 = x11+ x21 == 1234
%所谓线性规划,这里其实就是方程
problem = prob2struct(prob);
[sol, fval, exitflag, output] = linprog(problem)
作业一
- 模拟退火模型:模拟最优
- 关于文件导入与数据读取,
readcell
,readtable
,readmatrix
- 关于加入小节。
\section{}
,\subsection{}
,\subsubsection{}
,只有这几个表示的是小节,才会在目录中显示 \vspace{5em}
,用来作为间隔,方便图片不会遮挡。最好加上[htbp]
作业三
遗传算法——处理庞大数据时?
第三节课
作业一
这段代码主要实现了两类微分方程组的数值求解,分别是一个三阶含参微分方程组和刚性的 van der Pol 方程组
二、数值求解方法分析
求解器选择依据
普通方程组:使用ode45(龙格 - 库塔 4 (5) 阶算法),适合非刚性的中等精度问题
刚性方程组:对比ode45和ode15s(线性多步法),ode15s专为刚性系统设计,能显著提高计算效率
求解精度控制
通过odeset设置相对误差RelTol=1e-8和绝对误差AbsTol=1e-10
小步长h=0.001确保求解精度,但会增加计算量(实际中可使用变步长模式)
计算效率对比
通过tic/toc计时比较两种求解器在刚性问题上的性能
speedup = t1/t2量化ode15s相对ode45的加速比(理论上会远大于 1,体现刚性求解器的优势)
1 | % 含参的常微分方程的数值解 |
其他
- 分号。有分号,是会输出这个结果。没分号的代码是不会输出的
- 在运算符前后,要用空格分隔
- 正常文字排版,不用
\begin
,\end
。导言区设置了缩进的话,换行那就会自动缩进。文字换行,一种方法是空一行,一种方法是末尾加\\
- 加的不是
\start
,而是\begin
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 XT's Blog!