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