算法部分
- 1. 評價類模型
- 2. TOPSIS
- 3. 線性規劃
- 4. 聚類分析
- 5. 預測模型
- 6. 拉伊達準則(對異常值進行剔除)
- 7. 數據擬合
- 8. 圖論
- 代碼練習
- 1. 模擬圓周率
- 2. 斐波那契數列
- 3. 四只鴨子落在一個圓中概率
- 4. 方程2: y" = uy' + y,初值y(0) = 1,y(0) =0
算法講解
matlab代碼大全
1. 評價類模型
評價類模型內容1
評價類模型內容2
2. TOPSIS
構造計算評分的公式:
topsis評價模型:將原始數據矩陣統一指標類型(一般正向化處理) 得到正向化的矩陣
代碼
3. 線性規劃
-
線性規劃(linprog)模型:高中知識所學
-
整數線性規劃(intlinprog)模型:變量有部分限制為整數的線性規劃
-
匈牙利算法:求解任務分配問題的組合優化算法(一對一的問題)
二分圖最大匹配 匈牙利算法:用于尋找最大匹配,通過不斷尋找怎光路徑,來尋找最大匹配問題
講解傳送
匈牙利算法matlab實現 ???python實現
- 非線性規劃(fmincon)模型:目標函數或者約束條件中包含非線性函數
非線性規劃例題傳送陣 - 二次規劃(quadprog)模型:目標函數自變量為x的二次函數約束條件又全是線性的
- 多目標規劃(fgoalattain)模型:研究多于一個的目標函數在給定區域上的最優化,給予權重來評判目標重要性
matlab代碼傳送陣 - 繪制柱形競賽圖:https://blog.csdn.net/zhwzhaowei/article/details/110915135
4. 聚類分析
聚類分析(pdist)是根據在數據中發現的描述對象及其關系的信息,將數據對象分組。目的是,組內的對象相互之間是相似的(相關的),而不同組中的對象是不同的(不相關的)。
組內相似性越大,組間差距越大,說明聚類效果越好
K-Means聚類算法代碼通道
X=[0 0;1 0;0 1;1 1;2 1;1 2;2 2;3 2;6 6;7 6;8 6;6 7;7 7;8 7;9 7;7 8;8 8;9 8;8 9;9 9]; % X:N*P的數據矩陣
[idx,C,sumd,d] = kmeans(X,2); % idx:N*1的向量,存儲的是每個點的聚類標號
figure; % K = 2;表示將X劃分為幾類,為整數。 C:K*P的矩陣,存儲的是K個聚類質心位置
plot(X(:,1),X(:,2),'.'); % sumd:1*K的和向量,存儲的是類間所有點與該類質心點距離之和。 d:N*K的矩陣,存儲的是每個點與所有質心的距離
title 'Randomly Generated Data';
figure;
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(C(:,1),C(:,2),'kx',...'MarkerSize',15,'LineWidth',3)
legend('Cluster 1','Cluster 2','Centroids',...'Location','NW')
title 'Cluster Assignments and Centroids'
hold off
5. 預測模型
- 灰色預測模型:對原始數據進行生成處理來尋找系統變動的規律,并生成有較強規律性的數據序列,然后建立相應的微分方程模型,從而預測事物未來發展趨勢的狀況。
最小二乘法代碼傳送 ????????矩陣基本法使用與代碼講解 - 時間序列預測模型:按照時間順序,一定的時間間隔取得的一系列觀測值,進而預測以后的數據
時間序列分析傳送陣??時間序列例題及代碼分析 - 模擬退火優化算法1
模擬退火優化算法2
6. 拉伊達準則(對異常值進行剔除)
??????假設一組檢測數據只含有隨機誤差,對其進行計算處理得到標準偏差,按一定概率確定一個區間,認為凡超過這個區間的誤差,就不屬于隨機誤差而是粗大誤差,含有該誤差的數據應予以剔除,基于3σ原則
代碼實現傳送陣????正太檢驗
7. 數據擬合
- 插值法介紹傳送陣
插值法代碼傳送陣 - 數據擬合與插值介紹及部分matlab
matlab做曲線擬合的教程
擬合在線傳送陣
8. 圖論
握手定理
- 在任何有向圖圖中,所有頂點的度數之和等于邊數的2倍,所有頂點的入度之和等于所有頂點出度之和,等于邊數
- 無向簡單圖,同樣所有頂點的度數之和等于邊數的2倍
有限簡單圖
-
頂點個數有限
-
任意一條邊有且只有兩個不同的點與它相互關聯
-
邊之間不能夠重復
矩陣的表示PPt
-
Dijkstra講解:求最短路徑問題
Dijkstra算法matlab傳送陣1
Dijkstra算法matlab傳送陣2 -
kruskal:連通網中查找最小生成樹
講解視頻
kruskal matlab傳送陣 -
神經網絡:實現分類與預測模型
Bp神經預測代碼傳送
Bp神經分類代碼傳送
匹配講解:在一個圖中,兩個不相鄰的邊,稱之為匹配;其邊上的兩個端點稱之為配對的;若匹配集M的某條邊與頂點v是關聯的,則稱M飽和頂點v
代碼練習
1. 模擬圓周率
allPoints = input("請輸入總點數:")
count = 0
for i = 1:allPointsif rand^2 + rand^2 <=1count = count + 1end
end
res = count / allPoints * 4
disp(res)
2. 斐波那契數列
N = input("請輸入項數:")
res = [1,1]
for i = 3:Nelement = res(length(res)) + res(length(res) - 1)res = [res,element]
disp(res)
3. 四只鴨子落在一個圓中概率
N = 4
count = 0
total =1000 %試驗次數
for i = 1:totalp1 = 2*[rand,rand]-1;p2 = 2*[rand,rand]-1;p3 = 2*[rand,rand]-1;p4 = 2*[rand,rand]-1;p = [p1,p2,p3,p4]; %生成4 2 矩陣for j = 1:Nk = p(i,2) / p(i,1);b = [];if (i == j)continue;elseb = [b, p(i,2) - p(i,1)*k];endend
end
if (b(1)>=0 & b(2)>=0 & b(3)>=0 | b(1)<=0 & b(2)<=0 & b(3)<=0)count = count + 1;
res = count/total;
disp(res);
# 拓展N只鴨子
% 生成N個隨機點
function p Npoints(N)p = [];for i = 1:Np = [p;2*[rand,rand]-1] % 每一列end
end% 判斷截距的一致性
function isEqual ifisEqual(b)isEqual = 1;if b(1)>=0for i = 1:length(b)if b(i)<0isEqual = 0;endendelsefor i = 1:length(b)if b(i)>0isEqual = 0;endendend
end
4. 方程2: y" = uy’ + y,初值y(0) = 1,y(0) =0
syms y(x) mu
eqn = diff(y,2) == mu*diff(y)+y;
cond1 = y(0) == 1;
Dy(0) == 0;
dsolve(eqn) % dsolve(方程,初值) 常微分方程求解
B = repmat(A,m, n):將矩陣A復制m×n塊,即把A作為B的元素,Btm×n個A平鋪而成。
prod():與sunm類似,求積
數據導入函數:weitetable()
數據導出函數:readtable()
Y = round(X,N,type) 指定四舍五入的類型
type filename 在 MATLAB 命令行窗口中顯示指定文件的內容
imread(x.jpg):圖片讀入,以(0:255)讀入,格式為 unit8
imshow(x)矩陣圖片顯示
imresize(x,0.5)圖片大小更改
imwrite(x.jpg):圖片寫入,以圖片存入路徑
imbinarize(a):將圖片矩陣二值化
logical(A):將矩陣A轉換為邏輯值(即非零即為1)
bwlabel(A,4/8):聯通分量化
solve(方程1,方程2…,變量1,變量2…):求解函數