小編做數學建模題目時,在編程中常常會(hui) 遇見各種各樣的搜尋數組或者多維數組最大值、最小值的情況,以及第二大的值或者是非零最小值等情況,各位有遇到嗎?現將這些情況做一個(ge) 梳理,大家在之後用Matlab編程時若遇到了類似的情況,可將下麵的內(nei) 容當成功能速查表(CheatSheet)來快速查閱
1、求一維數組最大值及其所在位置[n,index]=max(a) %a為(wei) 一維數組(向量)
2、求二維數組(矩陣)的最大值及最大值所在的位置max_value=max(max(U)) %U為(wei) 一個(ge) 二維矩陣[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函數格式為(wei) B=cat(dim,A1,A2,A3,A4……),dim為(wei) 多維數組的維數。
方法五:用repmat或者reshape或者squeeze這三個(ge) 函數
3.2找最大值及其所在位置:
max_a=max(max(max(a))) %a為(wei) 一個(ge) 三維數組
r=find(a==max_a)
s=size(a)
[p,q,t]=ind2sub(s,r)
4.求向量的非零最小值a(find(a==0))=NaN %a為(wei) 一個(ge) 向量min(a)
5.尋找矩陣裏麵的第二大的值及其所在位置y=sort(x) %x為(wei) 一個(ge) 矩陣
second_max=y(length(x)-1)
n=find(x==second_max)
你知道,MATLAB到底有多厲害?下麵,從(cong) matlab在應用、功能、行業(ye) 三個(ge) 方麵剖析一下,你就知道matlab的發明者簡直不要太偉(wei) 大!!
應用
功能
行業(ye)
下麵再舉(ju) 幾個(ge) 例子,看看matlab是怎樣應用於(yu) 各大場景中的:
01、解決(jue) 預測類案例
通過已有的數據,對未知進行預測,是數據實際應用中常見的一種需求。這類問題,擁有大量算法模型包的MATLAB可以輕易解決(jue) 。通過確認訓練數據樣本(藍色數據點),借助MATLAB的最小二乘擬合函數對非線性函數進行擬合,即可得到最優(you) 擬合結果。緊接著,利用MATLAB進行結果可視化
最終效果如圖:
一維多項式擬合(曲線)
二維多項式擬合(曲麵)
對於(yu) 同一數據,指定滑動平均公式的不同參數和類型
02、數據差值
除了對數據進行擬合,MATLAB還支持對數據進行插值,插值是在一組已知數據點的範圍內(nei) 添加新數據點的技術。可以使用插值來填充缺失的數據、對現有數據進行平滑處理以及進行預測等
一維數據插值
二維數據插值
三維數據插值
03、繪製動圖
利用MATLAB的循環語句,還可自己生成動圖
水波動態模擬
繞螺旋線運動的小球
04、建模必備
建模常用的十大算法,包含蒙特卡羅算法、數據擬合、參數估計、插值等數據處理算法、圖論算法、最優(you) 化理論的三大非經典算法、數值分析算法、神經網絡算法等等,用matlab均可處理,對了,還有圖象處理算法,是的,MATLAB還可做圖像處理大部分情況下,往往是技窮限製了你的想象。
評論已經被關(guan) 閉。