美赛MATLAB技巧分享:数组最值的搜寻

小编做数学建模题目时,在编程中常常会遇见各种各样的搜寻数组或者多维数组最大值、最小值的情况,以及第二大的值或者是非零最小值等情况,各位有遇到吗?现将这些情况做一个梳理,大家在之后用Matlab编程时若遇到了类似的情况,可将下面的内容当成功能速查表(CheatSheet)来快速查阅

1、求一维数组最大值及其所在位置[n,index]=max(a) %a为一维数组(向量)

2、求二维数组(矩阵)的最大值及最大值所在的位置max_value=max(max(U))  %U为一个二维矩阵[row,col]=find(U==max_value)

3、寻找三维数组里的最大值及其所在位置3.1首先创建Matlab创建三维数组的方式可以有:

方法一:先生成随机矩阵或者零矩阵,再进行赋值
a=rand(2,2,2)  % a=ones(2,2,2)
a(:,:,1) =[7 3;6 0]
a(:,:,2) =[1 32;0.8 4]

方法二:直接循环生成
for i=1:2
for j=1:2
for k=1:2
A(i,j,k)=i+j+k;
end
end
end

方法三:由二维数组创建三维数组
A=[1,2,3;4,5,6;7,8,9]
B(:,:,1)=A
B(:,:,2)=2*A
B(:,:,3)=3*A

方法四:用cat函数创建
A=[1,2,3;4,5,6;7,8,9]
A1=[6 32 2;4 5 2;5 2 5]
A2=[4 2 5;2 4 5;2 2 1]
B=cat(3,A1,A2,A3)

即cat函数格式为B=cat(dim,A1,A2,A3,A4……),dim为多维数组的维数。
方法五:用repmat或者reshape或者squeeze这三个函数

3.2找最大值及其所在位置:
max_a=max(max(max(a))) %a为一个三维数组
r=find(a==max_a)
s=size(a)
[p,q,t]=ind2sub(s,r)

4.求向量的非零最小值a(find(a==0))=NaN %a为一个向量min(a)

5.寻找矩阵里面的第二大的值及其所在位置y=sort(x) %x为一个矩阵

second_max=y(length(x)-1)

n=find(x==second_max)

你知道,MATLAB到底有多厉害?下面,从matlab在应用、功能、行业三个方面剖析一下,你就知道matlab的发明者简直不要太伟大!!

应用

美赛MATLAB技巧分享:数组最值的搜寻

功能美赛MATLAB技巧分享:数组最值的搜寻

行业

美赛MATLAB技巧分享:数组最值的搜寻
下面再举几个例子,看看matlab是怎样应用于各大场景中的:

01、解决预测类案例

通过已有的数据,对未知进行预测,是数据实际应用中常见的一种需求。这类问题,拥有大量算法模型包的MATLAB可以轻易解决。通过确认训练数据样本(蓝色数据点),借助MATLAB的最小二乘拟合函数对非线性函数进行拟合,即可得到最优拟合结果。紧接着,利用MATLAB进行结果可视化

最终效果如图:

美赛MATLAB技巧分享:数组最值的搜寻

一维多项式拟合(曲线)

美赛MATLAB技巧分享:数组最值的搜寻

二维多项式拟合(曲面)

对于同一数据,指定滑动平均公式的不同参数和类型

美赛MATLAB技巧分享:数组最值的搜寻
02、数据差值

除了对数据进行拟合,MATLAB还支持对数据进行插值,插值是在一组已知数据点的范围内添加新数据点的技术。可以使用插值来填充缺失的数据、对现有数据进行平滑处理以及进行预测等

美赛MATLAB技巧分享:数组最值的搜寻

一维数据插值

美赛MATLAB技巧分享:数组最值的搜寻

二维数据插值

美赛MATLAB技巧分享:数组最值的搜寻三维数据插值

03、绘制动图

利用MATLAB的循环语句,还可自己生成动图

美赛MATLAB技巧分享:数组最值的搜寻

水波动态模拟

美赛MATLAB技巧分享:数组最值的搜寻
绕螺旋线运动的小球

04、建模必备

建模常用的十大算法,包含蒙特卡罗算法、数据拟合、参数估计、插值等数据处理算法、图论算法、最优化理论的三大非经典算法、数值分析算法、神经网络算法等等,用matlab均可处理,对了,还有图象处理算法,是的,MATLAB还可做图像处理大部分情况下,往往是技穷限制了你的想象。

【竞赛报名/项目咨询请加微信:mollywei007】

微信扫一扫,分享到朋友圈

美赛MATLAB技巧分享:数组最值的搜寻
上一篇

2021APMCM亚太地区大学生数学建模竞赛参赛规则

下一篇

斯坦福大学录取文书范文公布

你也可能喜欢

  • 暂无相关文章!

关注热点

返回顶部