Re: [問題]想請問有關eval單引號的打法

看板MATLAB作者 (攸藍)時間10年前 (2015/07/28 12:05), 10年前編輯推噓1(104)
留言5則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《pipited07 (天啊完全不知道取什麼)》之銘言: : 如題,小弟是matlab新手版上已經找到很多類似問題但解法還是看不懂@@ : 小弟想把下方的excel檔1-1的第二個工作表,寫進eval函數當中,讓他丟進迴圈可以讀到 : 1-1,1-2,1-3,1-4,1-5的每個excel的第二個工作表,並且命名為f1,f2,f3,f4,f5 : f1=xlsread('C:\Users\Adam\Desktop\A\1\1-1',2) : 上面此行為單純一個的範例 : 寫進迴圈中 : for i=1:5 : eval(['f',num2str(i),'=xlsread('C:\Users\Adam\Desktop\A\1\1-,num2str(i),',2)']) eval(['f', num2str(i), '=xlsread('C:\\Users\\Adam\\Desktop\\A\\1\\1-', ... num2str(i), '.xls']) : end : 我知道上面單引號錯誤連篇 : 想請教版上大大單引號方面到底是如何判斷 : 還有使用範圍 : 如單引號到底是頭尾相連一組,還是連續單引號之內是一組 不太懂這個問題是什麼? 'string' 這樣是一組, ' '內是你要eval的指令 : 也順便請教大大上面那個迴圈到底要怎麼改呢? 我還覺得沒事別玩eval玩到後來玩死自己而已 建議還是考慮用ls()跟regexp去做,並且用cell儲存矩陣 以下只是一個範例: dir_files = 'C:\\Users\\Adam\\Desktop\\A\\1' cd(dir_files) files = ls(dir_files) files = files(~cellfun('isempty', regexp('1-\d.xls', cellstr(files))), :) xls_forms = cellfun(@(x) xlsread(x), cellstr(files)) % cellfun都可以用for取代 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.27.107 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1438056340.A.72D.html

07/28 12:26, , 1F
同意 eval是非常不好的寫法 速度暨慢 程式易讀性也差
07/28 12:26, 1F

07/28 12:28, , 2F
在很多篇下面也呼籲過不要用eval了 根本是deval
07/28 12:28, 2F

07/28 12:29, , 3F
可讀性 編譯 最佳化 處理資源量 安全性 eval都不及格
07/28 12:29, 3F
對阿,最近幾天的帖子都是eval 每一篇都要強調一次eval是很糟糕的寫法... 用其他資料儲存格式去處理資料是比較友善的方式... eval用到後來,code都可以稱做evil... 沒人要接觸的程式碼(攤手 ※ 編輯: celestialgod (123.205.27.107), 07/28/2015 12:34:06

07/28 12:34, , 4F
剛剛一直在想evil可是拼不出來 哈哈
07/28 12:34, 4F

07/28 17:42, , 5F
謝謝c大~
07/28 17:42, 5F
文章代碼(AID): #1Ljl-KSj (MATLAB)
文章代碼(AID): #1Ljl-KSj (MATLAB)