MATLAB从入门到算法实践

九月份就要参加数学建模比赛,所以暑假要好好准备。为了国赛接触MATLAB。

MATLAB的优点:
1、 函数多,工具箱全 功能全
2、 人性化,且在不断改进 推荐使用最新的版本
3、 集成度高、文档完善 更加人性化
4、 上手快,表达方式更符合数学模式 Matlab下标从1开始,似伪代码 5、 代码开发时间短 Matlab集成度高

任何编程语言有优势也有不足的地方

MATLAB的缺点

1、 速度慢 解释型语言,和c语言速度不相上下,少用循环,多用向量化
2、 版权 闭源

数学建模可以提高创新能力、解决问题能力和提高见识
学习MATLAB可以解决实际问题,加深对数学工具的理解能力的培养

一、 应用场景

MATLAB代码实现,SIMULINK模块化实现
有很多接口方便语言之间交流
应用场景

  • 技术计算。数学计算、分析、可视化和算法开发
  • 控制系统设计。控制系统基于模型的设计,包括嵌入式系统
  • 仿真、快速原型及代码生成等
  • 信号处理和通信。信号处理和通信系统基于模型的设计,包
  • 括仿真、代码生成和验证等
  • 图像处理。图像采集、分析、可视化和算法开发
  • 测试和测量。测试和测量应用中硬件连接性和数据分析
  • 计算生物学。生物数据和系统的分析、可视化与仿真
  • 计算金融。金融建模、分析、交易及应用程序开发
  • 数学建模

二、 功能举例

1 . 数值计算

29*(2+23/3)-5^2%数学公式直接得出结果
 a=1%变量赋值运算
b=2
c=a+b
A = [1 2 3; 4 5 6; 7 8 10] 矩阵,基本运算单元
 rng(0)    %设置随机种子,便于读者验证
 A = ones(2, 5) * 6    % 元素全部为6的2*5矩阵
 B = rand(3, 5)
 C = [A; B]     % 数组合并
format long  % 长格式显示
format short  % 短格式显示

2 . 矩阵和数组操作
数组计算是指两个数组之间相对应元素之间计算
矩阵计算是指线性代数的规则计算

 A=[1 2;3 4];  % 测试矩阵A
B=[4 3;2 1];  % 测试矩阵B
r1=100+A % 矩阵A加上一个常数
r2_1=A*B % 两个矩阵相乘,矩阵乘法
r2_2=A.*B % 两个矩阵相乘,数组乘法

3 . 稀疏矩阵

B = bucky;

bucky

spy(B)
D=full(B)
A=reshape(1:18,2,3,3)  % 三维数组

4.逻辑型

M=magic(4) sum(M)%每一列的和相等
M>6 %大于6的元素
a='matlab'%字符串

5.结构数组
结构数组

employee.name='henry';
employee.sex='male'
employee.age=25;
employee.number=12345;
%也可定义二维数组
employee(2).name='lee';
employee(2).sex='female';
employee(2).age=23;
employee(2).number=98765;
employee(2)

6.元胞数组
元胞数组
下标通过数字编号可循环,元素里面是数据类型。
7.日期和时间

t = datetime(2017,6,28,6:7,0,0)
datenum(t)%2014b以前的版本适用
datevec(t)
t=Day = 27:28%修改日期

matlab可以直接导入excel的数据
table属性,可以通过行列显示也可以通过名称
设置快捷方式:clear:内存中清除变量
clc:命令行清除
closeall:绘图窗口关闭
8.差分

rng(0) %设置随机种子
A=randperm(9) %生成随机数列
B = diff(A) %求数列的差分

9.梯度求解

v = -2:0.2:2;
[x,y] = meshgrid(v);
z = x .*exp(-x.^2 - y.^2); %创建测试数据
[px,py] = gradient(z,.2,.2); %求梯度
contour(v,v,z),hold on,quiver(v,v,px,py),hold off %绘制等高线和梯度方向

10.一维差值数组

x=0:10;
y=cos(x);
xi=0:0.25:10;
strmod={'nearest','linear','spline','pchip'} %将差值方法存储到元胞数组
strlb={'(a)method=nearest','(b)method=linear',...
   '(c)method=spline','(d)method=pchip'}%绘图标签
for i=1:4
    yi=interp1(x,y,xi,strmod{i});%插值
    subplot(2,2,i)                       %子图
    plot(x,y,'ro',xi,yi,'b'),xlabel(strlb(i))
end

差值
11.计算拟合

rng(0) %设置随机种子
x=1:1:10;
y=-0.9*x.^2+10*x+rand(1,10).*5;%产生测试数据
plot(x,y,'o')                                  %绘制并标出原始数据点
p=polyfit(x,y,2)
xi=1:0.5:10;
yi=polyval(p,xi);                           %计算拟合的结果
hold on
plot(xi,yi);                                   %绘制拟合结果图
hold off

拟合
12.关于误差
a=0
for n=1:10000
a=a+0.1; % 0.1以二进制存储会有截断误差
end
13.可视化
14.概率分布
15.数据I/O
16.优化算法
优化算法
全局化工具箱

  • 穷举
  • Simulink
    17.信号处理
    17.1信号处理基本理论
    17.1.1信号的生成
    17.1.2数字滤波器结构
    17.2 IIR滤波器经典设计
    17.2.1 IIR滤波器直接设计法
    17.2.2 IIR滤波器
    17.2.3 广义巴特沃斯IIR滤波器设计
    17.3 FIR滤波器的MATLAN实现
    17.3.1 FIR滤波器设计
    17.3.2 fir1函数
    17.3.3 fir2函数
    18.1 图像文件的操作
    18.1.1 查询图像文件的信息
    18.1.2 图像文件的读写
    18.1.3 图像文件的显示
    18.1.4 图像格式的转换
    18.2 图像的几何运算
    18.2.1 图像的平移
    18.2.2 图像的镜像变换
    18.2.3 图像缩放
    18.2.4 图像的旋转
    18.2.5 图像的剪切
    18.3 图像的正交变换
    18.3.1 傅里叶变换
    18.3.2 离散余弦变换
    18.3.3 Radon变换
    18.4 MATLAB图像增强
    18.4.1 像素值及其统计特性
    18.4.2 对比度增强
    18.4.3 直方图均衡化
    18.4.4 空域滤波增强
    18.4.5 频域增强
    19.1 机器学习和神经网络

三、 新版本功能

  • Live Script功能丰富,插入数据种类多,可以同时看到带和和输出结果
  • 没有断点,不能调试
  • Table键可以自动补全

四、 大数据及人工智能

Data Store结合Tall Array数据结构,读取部分文件在深度学习、无人驾驶领域:

  • 数值计算基础知识
  • 可视化操作
  • 脚本/函数编写、调试
  • 概率与统计功能
  • 优化
  • 预测

数学建模

数学模型是用数学描述一些东西,算出一些结果,一个事务,抽象成一个数学事务,就是建模的过程。

一、简介

数学建模不等于数学:数学建模不是纯粹的数字和方程,一解决某个时间问题为目的,经过简化,从中抽象归结出来的数学问题就是该问题的数学模型,这个过程称为数学建模
数学建模用文字、符号、图标、公式、框图等描述客观事物的某些特征和内在联系的模型。

二、应用举例

1.MCM99问题:“非法”聚会
  许多公共设施的房间都标有人数的记号(合法容量),该数目可嘉定是以紧急情况下从房屋出口逃出的人数为基准确定的。
建立数学模型,讨论若干准则决定出房屋的“合法容量”,考虑几种不同的房屋结构。
将模型用于你所在学院(或附近城镇)的公共设施中,如果该类设施已标有“合法”人数的话,请将模型所得结果与之比较

2.MCM03问题:Gamma刀治疗方案

  • 放射外科用单一高剂量射线照射颅内的脑瘤。Gamma刀是一个钴-60源通过盔状物发射出来的并交会于一个点,从而在有效剂量的水平上形成一个近似球形的分布(称为“shot”)。四个盔状物分别具有4、8、14和18mm的射束通道直径。大多数目标体积要用1到15个“shot”加以处理。目标体积通常是一个含数百万个点的3D数字图像。你的任务是用球体填充问题模型来建立最优的Gamma到治疗方案。设计算法必须是相当有效率的

3.ICM2017问题:优化机场安检口旅客通行(排队问题)

  • 建立一个或多个模型,研究旅客通过安检口的流量,确定瓶颈,明确判断当前流程问题区域位置
  • 设计两个或多个对现有系统的潜在改进,提高旅客通信,减少等待时间。模拟这些变化展示改进如何影响流程

4.CUMCM14问题:折叠桌
圆形桌面,桌腿随铰链可摊成平板。桌腿由两组根木条组成,每组由一根钢筋连接,钢筋两端固定于最外侧的两根木条上,沿木条有空槽以保证可滑动

  • 给定平板120cm×50cm×3cm,木条宽2.5cm,钢筋固定在最外侧木条的中心,折叠后桌高53cm。描述折叠过程,给出设计加工参数。
  • 对于任意给定折叠桌高度和圆桌面直径,讨论长方形平板材料和折叠桌的最优(稳固性好,加工方便,用材最少)设计将该参数
  • 根据客户任意设定的折叠桌高度,桌面边缘线的形状大小和桌脚边缘线的大致形状,给出所需平板材料的形状尺寸和最优加工参数。

5.CUMCM16问题:系泊系统的设计
计算风速为12m/s和24m/s时钢桶和各节钢管的倾斜角度、锚链形状、浮标的吃水深度和游动区域

  • 请调节重物球的质量,使得钢桶的倾斜角度不超过5度,锚链在锚点与海床的夹角不超过16度
  • 水深16-20m,海水速度<1.5m/s,风速<36m/s,请给出考虑风力、水流力和水深情况下的系泊系统设计。

总结

在假期老师的指导下从模型、编程、写作三个方面都有很大的提升,对实践的内容总结如下:
1.数学建模认识、数学模型展示、数学建模能力分析
2.数据处理、预测方法及在竞赛中应用:2003年A题、2004年B题
3.优化类型模型及竞赛案例:2011年B题
4.方差分析、指标权重确定方法:2012年A题、2006年A题
5.离散类算法及其程序设计:2016年A题
6.元胞自动机及在交通模拟中的应用:2013年A题
7.微分方程模型及在竞赛中应用
8.主观评价性问题方法案例:2015年B题、2016年B题
9.参考文献、数据查找方法与技巧
10.竞赛选题与论文写作技巧

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Matlab是一种基于矩阵运算和大量函数库的高级计算软件,广泛应用于科学计算、数据处理、图像处理、信号处理等领域。想要从入门到精通Matlab,需要掌握以下几个方面: 1.基础语法:熟悉Matlab的基本语法、变量、运算符、矩阵、数组等基本概念,掌握Matlab编程基础。 2.函数库:Matlab具有非常丰富的函数库,掌握并了解常用的函数库,可以帮助提高计算效率和准确性。 3.工具箱:Matlab提供了各种工具箱,如信号处理工具箱、逻辑设计工具箱、优化工具箱等,掌握这些工具箱可以更好地完成特定领域的任务和研究。 4.应用实践:要熟练掌握Matlab,需要进行实践并解决具体问题。通过实际应用来加深对Matlab的理解和熟练程度。 5.学习资源:利用互联网上的各种学习资源,如官方文档、教程视频、社区论坛等,可以帮助快速掌握Matlab的使用和技巧。 总之,要从入门到精通Matlab需要付出学习时间和耐心,通过不断实践和学习,逐渐掌握Matlab的基础知识和高级应用技术,才能在科学计算和数据处理方面发挥更多的作用和价值。 ### 回答2: MATLAB作为一种高级的软件开发环境,应用广泛且功能强大。要从入门到精通,需要掌握以下四个方面:基础知识、编程技巧、应用技能和深入学习。 第一步是打好基础。需要了解MATLAB的一些基础概念和语法,包括变量、矩阵、数组、函数等等。学习常用的MATLAB指令,例如plot、if-else语句、for循环等等。此外,还需要了解如何读写文件、MATLAB图形用户界面等内容。 第二步是掌握MATLAB编程技巧。包括如何调试程序、如何编写文档和注释、如何提高程序效率等等。良好的编码习惯和技巧是提高程序质量的关键。 第三步是掌握MATLAB应用技能,了解其广泛的应用领域,例如图像处理、信号处理、数值计算等等。MATLAB的工具箱和应用模块包含了多种算法和分析方法,可以帮助用户实现精确的计算和分析。 最后一步是深入学习,包括研究MATLAB的高级功能、扩展MATLAB功能、开发MATLAB应用程序、使用MATLAB进行数据挖掘等等。这些深入学习的内容需要更加深入的编程知识和技术,但可以提高开发效率和程序质量,也能为工作和学术研究提供更加专业与精准的工具和技术支持。 总之,从入门到精通MATLAB需要不断学习和实践,积累编程经验和技能,扩展应用领域和加深学习深度。MATLAB作为一种广泛应用的软件开发环境,将会为用户提供各种各样的工具和技术来解决实际问题和提高任务效率。 ### 回答3: MATLAB是一种强大的数学软件,可以用于数学建模、数据分析、信号处理等领域。如果你想成为一名MATLAB专家,需要掌握以下几个方面: 1.基础语法:首先要学习MATLAB的基础语法,包括变量和数组的定义、运算符、条件语句、循环语句等。这些内容可以通过阅读入门教程或参加培训课程来学习。 2.图形绘制:MATLAB可以绘制各种类型的图形,如散点图、柱状图、折线图等。要成为MATLAB专家,需要掌握各种绘图函数的用法,以及如何将不同类型的图形组合在一起。 3.编程技巧:MATLAB不仅可以通过命令窗口进行计算,还可以编写程序来实现复杂的计算和数据处理。要成为MATLAB专家,需要掌握编程技巧,如函数的定义和调用、面向对象编程、调试技巧等。 4.应用领域:MATLAB在不同领域具有广泛的应用,如控制系统、通信系统、信号处理、图像处理等。了解各种应用领域的算法和技术,可以帮助你更好地使用MATLAB进行建模和分析。 5.不断学习:MATLAB是一种不断更新和发展的软件,要成为MATLAB专家,需要持续学习新的功能和应用。可以通过参加培训课程、阅读文献、参与社区讨论等方式来学习新的知识和技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值