㈠ matlab怎麼用
判斷矩陣一致性檢驗的Matlab源程序代碼
Matlab源程序代碼如下:
clc
clear
disp('請輸入判斷矩陣A')
A=input('A=');
[n,n] = size(A)
%方法1: 算術平均法
Sum_A = sum(A);
SUM_A = repmat(Sum_A,n,1);
Stand_A = A ./ SUM_A;
Stand_A = A ./ Sum_A; % 這樣也可以的
disp('算術平均法求權重的結果為:');
disp(sum(Stand_A,2)./n)
%方法2: 幾何平均法
Prct_A = prod(A,2);
Prct_n_A = Prct_A .^ (1/n);
disp('幾何平均法求權重的結果為:');
disp(Prct_n_A ./ sum(Prct_n_A))
%方法3: 特徵值法求權重
[V,D] = eig(A);
Max_eig = max(max(D))
[r,c]=find(D == Max_eig , 1);
disp('特徵值法求權重的結果為:');
disp( V(:,c) ./ sum(V(:,c)) )
%計算一致性比例CR
CI = (Max_eig - n)/(n-1);
RI=[0 0.0001 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58
1.59];
% 這里n=2時,一定是一致矩陣,所以CI = 0,為了避免分母為0,將這里的第二個元素改為了很接近0的正數
CR=CI/RI(n);
disp('一致性指標CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
disp('因為CR<0.10,所以該判斷矩陣A的一致性可以接受!');
else
disp('注意:CR >=
0.10,因此該判斷矩陣A需要進行修改!');
end
㈡ matlab編程入門需要怎麼做
入門需要做下面幾個方面事:
1、M語言編程。這是所有Matlab操作的基礎,Matlab的所有功能都是通過M語言來實現的。M語言是一種簡單的腳本語言,學習M語言,要學會基本的語句,還要能夠掌握基本的文件IO,GUI開發,數據導入,矩陣操作等等。
2、科學計算。科學計算是matlab最為強大的功能之一,這一部分的學習實質上是對大學數學的一個復習。你得復習微分方程的建立,積分求導的法則,線性代數的基本理論。復習完這些知識,再來進行各種計算。
3、機器學習。Matlab內置了豐富的機器學習庫最新版的matlab甚至支持深度學習以及GPU運算,只需要一些簡單的M語言編程就能快速搭建起來一個網路。
4、模擬模擬。能夠進行模擬模擬也是Matlab的一大特色功能,在科學領域,小到原子運行,大到宇宙爆炸,沒有他不能勝任的;在工程領域,電磁場模擬,機械結構評估,水利電力模擬,Matlab幾乎無所不能。
1、我們必須下載好一個matlab版本,一般來說新版的話,它的內置命令函數簡化,操作容易上手快,對基礎知識的儲備也不是很多。
2、這款軟體需要一定的數學知識,最為重要的是懂些矩陣和線性代數的知識,為了更好的更直觀地表達數據的可視化。
3、後面我們自己可以找一本有關matlab的書籍教材,網上資料很多,找一本然後按照上面的例子上手matlab。
4、最後,我們再根據具體的工程、項目的需求來驗證我們的matlab知識。
㈢ Matlab編程
60個同學抽60個題目且題號各不相同,用matlab實現,需要使用matlab的randperm函數,代碼如下:
截圖效果2
tihao=randperm(60);xuehao=1:60;for i=xuehao;disp(sprintf('學號為%d的同學,恭喜你,抽中第%d題 ',i,tihao(i)));end;
㈣ matlab如何編程
首先,在我們的桌面上找到matlab軟體的圖標,將滑鼠移到該位置雙擊點開,這時電腦屏幕會彈出matlab軟體的主界面。
這只是我的一點個人經驗,還是希望能夠幫助大家的。
㈤ 用matlab可以學到的編程技巧
1、入門——學會數學(矩陣)方面的有關操作,及其各類常見函數的應用。 2、再次入門——學會用matlab面向對象語言的編程方法技巧。 3、略窺門徑——由於matlab僅僅是一個工具軟體,所謂的傻瓜語言,所以它僅僅是一個輔助性的東西,不是為了學習matlab而學習matlab,我們最重要的還是讓他來為我們服務,應該根據自己的現階段具體應用領域或者以後的領域具體而定,matlab提供很多工具箱(信號處理、控制、語音等等),定位好自己,事半功倍。 4、自己摸索——matlab不像C語言,它很散,應該自己在工作學習中記下使用的函數/技巧/程序,向高手方向進發。
㈥ 問一下大神matlab應該怎麼編程
不需要用循環,直接使用邏輯數組運算更快。
我假設你的x和x(1)--x(n)是不同的變數,那麼我用a來表示你的x,用x數組代表你的x(1)--x(n)
我隨便給這些數賦值
a=10;
x=1:3:30;
k=5;
temp = true(size(x));
temp(k) = false;
y = prod(a - x) / prod(x(k) - x(temp));
a-x是生成數組[a-x(1), a-x(2), ..., a-x(n)],prod()是吧這個數組相乘
temp是一個邏輯數組,和x相同大小,並且只有第k個數是false。x(temp)就是生成[x(1), x(2),..., x(k-1), x(k+1), ..., x(n)]
其他的應該容易理解
補充:拉格朗日插值多項式可也這么寫:
%x0,y0是已知各點坐標,共n點
x0 = [1, 2, 3];
y0 = [1, 8, 27];
n = length(x0);
%x是要求的點
x = 4;
y = 0;
for k = 1:n
temp = true(size(x0));
temp(k) = false;
y = y + y0(k) * prod(x - x0(temp)) / prod(x0(k) - x0(temp));
end