matlab 學(xué)習(xí)總結(jié)
1、Matlab軟件中的ifelse語句中可以轉(zhuǎn)化成functiony=member_ship(x)y=zeros(size(x));index1=find(x>=23);y(index1)=1;
index2=find(xcase6
RI=1.24;case7
RI=1.32;case8
RI=1.41;case9
RI=1.45;otherwise
disp("數(shù)據(jù)錯(cuò)誤!")returnend
[P_A,lamda_A]=eig(A);%求A的特征值和特征向量
[value,k]=max(max(lamda_A));%取最大特征值和其所對(duì)應(yīng)的位置omega_A=P_A(:,k)/sum(P_A(:,k));%取最大特征向量,并進(jìn)行規(guī)一化處理CI_A=(value-n)/(n-1);%一致性指標(biāo)
CR_A=CI_A/RI;%一致性比率將函數(shù)保存后,輸入下面的程序運(yùn)行即可:%%%%%%%%%------輸入判斷矩陣A=[1,3,2,7,5;1/3,1,1/2,5,2;1/2,2,1,4,2;1/7,1/5,1/4,1,1/3;1/5,1/2,1/2,3,1];
B1=[1,2,3;1/2,1,2;1/3,1/2,1];B2=[1,1/3,1;3,1,2;1,1/2,1];B3=[1,1/2,1/4;2,1,1/3;4,3,1];B4=[1,1,4;1,1,3;1/4,1/3,1];B5=[1,1/5,1/2;5,1,3;2,1/3,1];
%%%%%%%%%%%------------計(jì)算各個(gè)判斷矩陣的排序權(quán)值和一致性指標(biāo)[omega_A,CR_A,CI_A]=weight_fun(A)[omega_B1,CR_B1,CI_B1]=weight_fun(B1)[omega_B2,CR_B2,CI_B2]=weight_fun(B2)[omega_B3,CR_B3,CI_B3]=weight_fun(B3)[omega_B4,CR_B4,CI_B4]=weight_fun(B4)[omega_B5,CR_B5,CI_B5]=weight_fun(B5)%%%%%------------求B層的層次總排序
omega=[omega_B1,omega_B2,omega_B3,omega_B4,omega_B5]%Bi對(duì)A的排序權(quán)值表[n,m]=size(B1);order_B=zeros(1,n);fori=1:n
order_B(i)=sum(omega(i,:).*omega_A");%計(jì)算層次C總排序數(shù)值endorder_B
CI=[CI_B1;CI_B2;CI_B3;CI_B4;CI_B5];
CR=sum(CI.*omega_A)/sum(0.58.*omega_A)%計(jì)算隨機(jī)一致性指標(biāo)
擴(kuò)展閱讀:matlab學(xué)習(xí)心得體會(huì)
最近在學(xué)習(xí)matlab,一直不入其法門。從網(wǎng)上看到了一些大蝦的經(jīng)驗(yàn)心得,感觸頗深,轉(zhuǎn)貼過來,希望給初學(xué)者有一定的指引。
一)寫給學(xué)習(xí)matlab的新手們作者:eight(八)來源振動(dòng)論壇
本人接觸matlab已經(jīng)有5年多的時(shí)間了,一直想寫點(diǎn)東西,但是之前不知道放在哪里才能發(fā)揮它的最大作用,直到幾天前碰上了這個(gè)論壇(有點(diǎn)像諸葛亮遇見姜維,哈哈)。
廢話不說,我想借貴論壇寶地,寫一些經(jīng)驗(yàn)給使用matlab的新手們,當(dāng)然了,老大們也可以看看,不嫌棄我寫得粗糙的話還可以指點(diǎn)一下,先謝過了~~~~
首先我想說的是,matlab跟其他語言不一樣(我用的比較多的編程語言,除了matlab就應(yīng)該是c或c++了,VB和Delphi也接觸過,我想版面(matlab版)大部分人也差不多),如果你抱著“把其他語言的思想運(yùn)用在matlab里面”的話,那么我想,即使程序運(yùn)行不出錯(cuò),也很難把握matlab的精髓,也就很難發(fā)揮matlab的作用了。所以,如果你是希望matlab作為VC的附屬品,即你不想在matlab上面花太多功夫,只純粹想用matlab來完成VC做不了或很難做成的任務(wù)的話,那么,這篇文章你也不需要再閱讀下去了;如果你是希望掌握一門語言、一個(gè)工具,使它更有效為你服務(wù)的話,那么,希望本文對(duì)你有所幫助。
Matlab是一個(gè)基于矩陣運(yùn)算的軟件,這恐怕是眾所周知的事情了,但是,真正在運(yùn)用的時(shí)候(就是在編程的時(shí)候),許多人(特別是初學(xué)者)往往沒有注意到這個(gè)問題,因此,for循環(huán)(包括while循環(huán))滿天飛..這不僅是暴殄天物(沒有發(fā)揮matlab所長),還浪費(fèi)了你寶貴的時(shí)間。對(duì)此,版友MVH在他的“MATLAB小技巧”一文中也有所涉及,雷同的東西我也就不重復(fù)了,matlab的“幫助”里面也有相關(guān)的指示。我這里想說的一點(diǎn)是,初學(xué)者往往在初始化矩陣的時(shí)候注意到這個(gè)問題,懂得了使用矩陣而不是循環(huán)來賦值,但是,在其他環(huán)節(jié)上,就很容易疏忽,或者說,仍然沒有擺脫C++的思想。舉個(gè)例子吧,下面的代碼是我的一個(gè)師弟寫的,我想他接觸matlab也有2、3年時(shí)間了(在此說明一下,接觸2、3年并不是表示每天都會(huì)跟matlab打交道,我本人也不是,只是在一年某幾個(gè)時(shí)間段里面連續(xù)使用),但是仍然會(huì)出現(xiàn)類似的問題:
J=0;
lt=size(imf1,2);for(i=1:lt)
if(abs(imf1(i))>1)J=1;breakendend
上面的代碼實(shí)現(xiàn)了一個(gè)目的——檢查信號(hào)imf1(一個(gè)向量)是否存在絕對(duì)值大于1的點(diǎn),這顯然是基于C++的思想寫出來的。如果在matlab下面,其實(shí)用兩個(gè)語句就足夠了(當(dāng)然,可以合并為一個(gè)):
q=find(imf1>1);J=~isempty(q);
這樣的修改帶來的好處是很可觀的。
又如:
forj=1:num
imf1(start1+j)=2*li1(j+1)-imf1(start1+j);end
這是一個(gè)對(duì)稱翻折的問題,它完全可以用以下這個(gè)語句簡潔表示:imf1(start1+1:start1+num)=2*li1(2:num+1)-imf1(start1+1:start1+num);
因此,如果是新手,可以先用循環(huán)(基于C++的思想)來編寫代碼,然后看看能否用matlab的語言(基于矩陣的思想)來改進(jìn)。當(dāng)然,這樣做的前提是你對(duì)matlab提供的一些函數(shù)比較熟悉才行,這些函數(shù)在matlab的“幫助”那里搜索“FunctionsUsedinVectorizing”就可以找到一些,其他的也可以找相關(guān)的書籍(沒找到?不可能,電子版總可以下載到的)
對(duì)提高matlab編程能力的方法,我想主要有以下三個(gè):1.查help
2.多上上論壇,搜索帖子、發(fā)帖子問人3.閱讀別人、特別是牛人的程序
當(dāng)然了,正如所有的程序語言一樣,“3分課本7分上機(jī)”,一定要?jiǎng)邮植判,不能光看。多想、多思考、多嘗試,才是正路。
最后,整理一下常用的快捷鍵(用【】表示)或命令:1.在命令窗口(CommandWindow)中:
1)【上、下鍵】——切換到之前、之后的命令,可以重復(fù)按多次來達(dá)到你想要的命令
2)clc——清除命令窗口顯示的語句,此命令并不清空當(dāng)前工作區(qū)的變量,僅僅是把屏幕上顯示出來的語句清除掉
3)clear——這個(gè)才是清空當(dāng)前工作區(qū)的變量命令,常用語句clearall來完成
4)【Tab】鍵——(轉(zhuǎn)自版友心燈)在matlab@hit.edu.cn看到的:在command窗口,輸入一個(gè)命令的前幾個(gè)字符,然后按tab鍵,會(huì)彈出前面含這幾個(gè)字符的所有命令,找到你要的命令,回車,就可以自動(dòng)完成。目前討論結(jié)果是:matlab6.5版本中,如果候選命令超過100個(gè),則不顯示。而在matlab7以后版本中,則沒有這個(gè)限制,均可正常提示5)【Ctrl+C】(或【Ctrl+Break】)——(轉(zhuǎn)自版友yangjin_ren)在matlab程序運(yùn)行過程中,可能由于程序編寫的失誤,導(dǎo)致程序不停的運(yùn)行,在命令窗口輸入“Ctrl+C”可以將運(yùn)行的程序停下來,而不需要將整個(gè)Matlab程序關(guān)掉。不過進(jìn)行此操作的前提是能夠激活切換到命令窗口才行,呵呵。2.在編輯器(Editor)中:
1)【Tab】(或【Ctrl+]】)——增加縮進(jìn)(對(duì)多行有效)2)【Ctrl+[】--減少縮進(jìn)(對(duì)多行有效)
3)【Ctrl+I】--自動(dòng)縮進(jìn)(即自動(dòng)排版,對(duì)多行有效)4)【Ctrl+R】——注釋(對(duì)多行有效)5)【Ctrl+T】——去掉注釋(對(duì)多行有效)
6)【Ctrl+B】——括號(hào)配對(duì)檢查(對(duì)版本6.5有效,但版本7.0無效,不知道是取消了還是換了另外的快捷鍵,請(qǐng)大牛們指點(diǎn),其他版本沒有測試過)7)【F12】——設(shè)置或取消斷點(diǎn)8)【F5】——運(yùn)行程序
其余的例如在Debug狀態(tài)下的快捷鍵就不多說了,自己看菜單Debug吧
累了,有時(shí)間再寫吧。希望大家多交流~~~~~~
Coming:(以下東西都是一年前做的了,不知道能否記起,呵呵)
1)關(guān)于神經(jīng)網(wǎng)絡(luò)的——調(diào)用matlab的nntool命令后的使用問題(我做的時(shí)候沒有看過其他書籍或資料,是自己閉門造車的結(jié)果,如果寫之前發(fā)現(xiàn)其他書籍有相關(guān)介紹的話就不寫了)
2)關(guān)于外部接口的——matlab與C++Builder的接口,想詳細(xì)介紹如何利用matcom4.5在C++Builder中調(diào)用matlab的代碼以及matcom的一些技巧。由于我不是搞項(xiàng)目開發(fā)的(搞科研、搞課題的),所以對(duì)VC不熟悉,大學(xué)的時(shí)候?qū)W過一點(diǎn),不過我想對(duì)于搞科研來說C++Builder就足夠了,免去很多麻煩,Builder在界面設(shè)計(jì)和數(shù)據(jù)庫連接上面(我只接觸過這兩方面)還是做得不錯(cuò)的。同樣,如果發(fā)現(xiàn)其他書籍上有類似的東西就不寫了3)GUI方面也寫寫吧,只是一點(diǎn)點(diǎn)心得或者體會(huì),呵呵,這個(gè)相對(duì)簡單些,篇幅相對(duì)要少些。
真正接觸matlab一年左右,我很喜歡上了matlab的簡單的語法,易于繪制圖形,gui編
程也非常容易,
并且功能強(qiáng)大的開放式的toolbox。因此,盡管我一直沒有這方面的應(yīng)用,但是我還是對(duì)
它非常感興趣,F(xiàn)
將個(gè)人的matlab的一點(diǎn)學(xué)習(xí)體會(huì)列在這里,愿能夠?qū)Υ蠹?特別是初學(xué)者)起到一點(diǎn)兒微薄的作用也好。
1.help:最有效的命令(參閱了瀚海mathtools的starrynight網(wǎng)友的文章)
其實(shí),可以這樣說吧,如果離開matlab軟件,我想我自己是基本上什么都不會(huì)。一遇
到什么問題,通常
我的第一反應(yīng)是:help,就先說說自己對(duì)help的一些常用方法吧。1)命令窗口直接敲“help”,你就可以得到本地機(jī)器上matlab的基本的幫助信息。
2)對(duì)于某些不是很明確的命令,只知道大體所屬范圍,譬如說某個(gè)工具箱,直接在
命令窗口中敲入
helptoolboxname,一幫可以得到本工具箱有關(guān)的信息:版本號(hào),函數(shù)名等。3)知道函數(shù)名,直接用helpfunname就可以得到相應(yīng)的幫助信息。
2.seealso:不可小瞧的關(guān)聯(lián)
在用help命令的時(shí)候,可能因?yàn)槲覀冮_始估計(jì)的方向不一定完全正確,在列出的幫
助信息中沒有直接
給出的我們要找的東西,但是我們一定不要忽略了在幫助的最后列出的seealso。譬如:曾經(jīng)遇到一個(gè)畫橢球的問題。剛開始我以為這個(gè)命令函數(shù)應(yīng)該在graph3d中給
出的(順帶提一句,
只用help的時(shí)候我們就可以看到matlab\\graph3d-Threedimensionalgraphs.。于是乎,我又helpgraph3d,很遺憾,在Elementary3-Dplots.中我沒有發(fā)現(xiàn)畫橢球的函數(shù),但是
我發(fā)現(xiàn)在seealso中
有SPECGRAPH.抱著試試的態(tài)度,我又helpspecgraph,^_^,這次在Solidmodeling中找到了
ellipsoid-Generateellipsoid。
3.lookfor:matlab中的google
當(dāng)我們很多什么頭緒都沒有的時(shí)候,我們可以求助于它,往往會(huì)收到意想不到的效果。
譬如:曾經(jīng)在gui編程的時(shí)候,遇到過這樣一個(gè)問題:想拖動(dòng)鼠標(biāo)時(shí),要出現(xiàn)一個(gè)方
框,就像你在桌面
上拖動(dòng)鼠標(biāo),會(huì)出現(xiàn)虛線框一樣。當(dāng)初我也剛開始一定都不知道該查找什么東西,后來
想起用它了。于是乎,>>lookforRectangle(很不好意思,當(dāng)時(shí)這個(gè)矩形我還是在金山詞霸中搞定的-_-)
。果然,在其中就找到
這樣一條信息:GETRECTSelectrectanglewithmouse.^_^
4.get,set:GUIobject屬性的幫手
在GUI編程中,我們可能有時(shí)候想改變某些object的屬性,或者想讓它安裝自己的
想法實(shí)現(xiàn),但是我們又不
記得這些object的屬性,更別提怎么設(shè)置他們的值了。這時(shí),可以用get(handles)得
到此對(duì)象的所有的屬性
及其當(dāng)前值。用set(handles)可以得到對(duì)象所有可以設(shè)置的屬性及其可能的取值。找
到我們需要的屬性名字和
可能的取值之后,就意義用get(handles,‘propertyname’)取得此屬性的值,
用set(handles,‘propertyname’,values)設(shè)置此對(duì)象此屬性的值。
5.Edit:查看m源文件的助手
在應(yīng)用matlab過程中,可能我們想看看它的m源文件,當(dāng)然用editor定位打開也行,
但是我經(jīng)常采用的式直接
在command窗口中用editfunname.m,就省去了定位的麻煩。
6.其他常用命令:which,what等
which:定位指定的函數(shù)和文件,最好帶上參數(shù)-all,以便顯示更加多的信息what:獲得指定目錄的m文件,mex文件以及mat文件名列表
7.各個(gè)高校bbs的mathtools版
誰都不可能什么都懂,但是永遠(yuǎn)記住這樣一句話:Twoheadsarebetterthanone.多向他人請(qǐng)教,多相
互討論,這不只是在于解決matlab的問題上。我最經(jīng)常去的bbs有:
.瀚海星云(的mathtools版
.水木清華(的mathtools版.飲水思源(的mathtools版.紫丁香(的matlab版
8.一些專業(yè)網(wǎng)站
我所知道的有:
1)mathworks的官方網(wǎng)站
2)這里有很多好的工具箱或者
小的輔助函數(shù)
可以下載,不過是國外的,e文和網(wǎng)絡(luò)對(duì)來說感覺都是很不爽的事情。3)Matlab大觀園,估計(jì)只要在網(wǎng)上搜索過matlab資料的就不會(huì)不知道它,園主
是東北大學(xué)的薛定宇教授,一直從事MATLAB語言及其應(yīng)用研究。4)文宇工作室
5)matlab語言與應(yīng)用,薛定宇的一個(gè)論壇6)中國學(xué)術(shù)交流園地,除了matlab有關(guān)外,還有很多其他的專業(yè)的文章。
最后一條,要大膽的去試,哪怕只有一丁點(diǎn)兒可能。
譬如,早些時(shí)候,有朋友問我:我用什么命令可以查找所建立網(wǎng)絡(luò)的屬性的含義,比如說:我建立網(wǎng)絡(luò)net=newff(minmax(p),[3,1],
{"tansig","purelin"},"traingda");想看看net.trainParam。lr_inc屬性是啥含義用什
么命令查看呢?
當(dāng)時(shí),我根本連練習(xí)都沒有用matlab的神經(jīng)網(wǎng)絡(luò)工具箱的東西練習(xí)過。我helpnewff也沒有結(jié)果,
后來實(shí)在沒有辦法,就試著help參數(shù)值traingda,沒有想到還居然真的就找到答案了。
還有,曾經(jīng)有朋友想把waitbar的默認(rèn)顏色的紅色改掉,我用help沒有發(fā)現(xiàn)可以改
變其填充色的property,后來
我看了waitbar.m,發(fā)現(xiàn)其填充色本來就不試一個(gè)可變參數(shù),但是既然發(fā)現(xiàn)了是什么地方
,就可以自己改變的,這都得益于matlab
的開放性。這也為我們提供了很大的靈活性(在他的基礎(chǔ)上,我們可以做很少的變換,
就自己寫一個(gè)填充色可以以屬性輸入而改變的waitbar的)
友情提示:本文中關(guān)于《matlab 學(xué)習(xí)總結(jié)》給出的范例僅供您參考拓展思維使用,matlab 學(xué)習(xí)總結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。