這篇文章將為大家詳細(xì)講解有關(guān)MATLAB中預(yù)定義對(duì)話框的文件打開對(duì)話框以及如何批量重命名是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
目前創(chuàng)新互聯(lián)公司已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、渭城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
函數(shù):uigetfile。這個(gè)函數(shù)的名字分成三部分,也容易理解,ui:用戶界面,get:獲得,file:文件。加在一塊就是給你一個(gè)界面去選擇(獲得)一個(gè)文件。
用法:首先說一下這個(gè)函數(shù)獲得的僅僅是文件名和文件路徑,還有一個(gè)可省缺的輸出。帶小擴(kuò)號(hào)的表示可以省略。
拓展名要用大括號(hào)括起來且不同拓展名之間用分號(hào)隔開,如:
{'*.jpg';'*.bmp';'*.png'}
第一個(gè)返回參數(shù)是文件名(帶拓展名),第二個(gè)返回參數(shù)是該文件所在的路徑(最后帶'\',而uigetdir函數(shù)不帶,以后講),第三個(gè)參數(shù)是表示你選的是第幾個(gè)拓展名。
點(diǎn)擊‘’打開‘’(被水印擋住了)后,在命令行中顯示的返回的值如下:
fName =
cancle.png
pName =
C:\Users\F\Desktop\icons\
index =
3
'*.png',是第三個(gè)所以index是3。
那么結(jié)合昨天說的內(nèi)容實(shí)現(xiàn):創(chuàng)建一個(gè)文件打開對(duì)話框可以選擇jpg,png,bmp圖片,并保存改文件所在路徑下所有以jpg,png,bmp為拓展名的圖片,并保存照片的張數(shù):(代碼如下,其中warning off 可忽略)
下面講一下如何批量重命名某文件夾下的所有文件
先說一下我是如何碰到這個(gè)問題的,前天我在做簡(jiǎn)歷時(shí)發(fā)現(xiàn)記不清以前用遺傳算法做的一個(gè)東西是要優(yōu)化啥了,然后我打開代碼運(yùn)行下發(fā)現(xiàn)報(bào)錯(cuò)了,說是因?yàn)檎也坏胶瘮?shù)文件。我用的是謝菲爾德大學(xué)的遺傳算法工具箱,才下載下來時(shí)里面的所有代碼的拓展名是:.M。而MATLAB是區(qū)分大小寫的,正確的m文件的拓展名應(yīng)該是:.m。一個(gè)工具箱里面好多函數(shù)的啊,怎么辦?手動(dòng)修改?不僅能累死你還能把你眼睛瞅瞎。那么下面開始說正事:
首先MATLAB中沒有重命名的函數(shù),但是windows操作系統(tǒng)里有一個(gè)叫rename的函數(shù)它可以重命名file。那么如何在MATLAB中執(zhí)行操作系統(tǒng)的命令呢:很簡(jiǎn)單,在所要執(zhí)行的命令前加一個(gè)感嘆號(hào)(英文輸入狀態(tài)下的感嘆號(hào)哦)就行。
用法:!rename,OldName,NewName
開始時(shí)文件夾下的部分文件:
運(yùn)行代碼的一秒鐘后
代碼就幾行,下面解釋一下:
這個(gè)好理解吧,先是執(zhí)行dir獲取以 .M為拓展名的所有文件,dir返回的是一個(gè)具有5個(gè)字段的結(jié)構(gòu)體,第一個(gè)字段是name,然后直接進(jìn)行struct2cell返回的是一個(gè)具有5行的細(xì)胞數(shù)組,我們只需要第一行的內(nèi)容(第一行是name的值)。所以接著執(zhí)行:
好了現(xiàn)在所有要改的文件名都搞出來了。接下來就是遍歷files中的元素了
由于代碼很短,就直接在命令行中執(zhí)行了。
先獲得第 i 個(gè)name然后執(zhí)行eval這句,這句是用來重命名的。下面來解釋一下eval這行:
eval是用來執(zhí)行一個(gè)字符串的函數(shù),舉個(gè)例子:3+5 就等價(jià)于eval('3+5'),那么這里的這句就等價(jià)與 !rename,file,file(1:end-1).m。但是直接這樣做是不行的,是因?yàn)?rename 后面每個(gè)逗號(hào)之間都被看成是字符串,而路徑下沒有名為''file''也沒有名為 ''file(1:end-1).m''的文件,所以這樣不行。
而使用是通過中括號(hào)把這些字符橫向拼接在一塊,file不是字符'file'了而是file所對(duì)應(yīng)的具體的文件名。file(1:end-1)是獲得去掉后綴M后的字符串。
如果單個(gè)執(zhí)行的話應(yīng)這樣:
關(guān)于MATLAB中預(yù)定義對(duì)話框的文件打開對(duì)話框以及如何批量重命名是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。