Re: [問題]用eval求矩陣大小已回收

看板MATLAB作者 (神無月 孝臣)時間17年前 (2008/11/03 11:27), 編輯推噓5(501)
留言6則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《miniphone1 (小一)》之銘言: : clu1=[1 2 3 4 5]; : clu2=[2 3 4 5 6]; : clu3=[6 5 4]; : clu4=[6 5 7 8 9 1]; : clu5=[3 1]; : for i=1:5 : eval('[x y]'=num2str(i),'=size(clu)',num2str(i);); : end : 請問各位高手,在用eval求x y 時,我知道這種語法是錯的 : 可是我想不出來要怎麼使用,請大家幫幫忙。 eval簡易教學 所謂eval就是將"字串"當成程式碼來執行的指令 所以只要做出想要的字串,就可以使用eval來跑出想要的結果 step 1: 把想要執行的程式碼先打出幾個來 以這題為例,想要執行的碼有五個 [x y]=size(clu1); [x y]=size(clu2); [x y]=size(clu3); [x y]=size(clu4); [x y]=size(clu5); step 2: 找出有變化的部份 [x y]=size(clu1); [x y]=size(clu2); [x y]=size(clu3); [x y]=size(clu4); [x y]=size(clu5); step 3: 隨便拿一行程式碼出來處理成字串 [x y]=size(clu1); 處理成=> ['[x y]=size(clu1);'] ['[x y]=size(clu1);'] ans = [x y]=size(clu1); step 3: 把會變化(被上色)的部份獨立出來 ['[x y]=size(clu1);'] 處理成=> ['[x y]=size(clu','1',');'] step 4: 將被獨立出來的部份以字串生成取代掉 ['[x y]=size(clu','1',');'] 處理成=> ['[x y]=size(clu',num2str(),');'] step 5: 放入迴圈內測試看看跑出來的會不會是最初想要執行的程式碼 for i = 1 : 5 ['[x y]=size(clu',num2str(i),');'] end ans = [x y]=size(clu1); ans = [x y]=size(clu2); ans = [x y]=size(clu3); ans = [x y]=size(clu4); ans = [x y]=size(clu5); step 6: 確認生成的字串無誤後,包上eval即可完成 for i = 1 : 5 eval(['[x y]=size(clu',num2str(i),');']) end 基本流程就是這樣,不會特別困難 比較需要注意的就是如果想要生成的字串內有'的話得小心處理 字串生成不只是num2str而已,這個是處理數字很方便 還有很多方式可以玩,總之先把弄數字的完熟後剩下的就不難了 -- Deserves death! I daresay he does. Many that live deserve death. And some die that deserve life. Can you give that to them? Then be not too eager to deal out death in the name of justice, fearing for your own safty. Even the wise cannot see all ends. Gandalf to Frodo -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.25.235

11/09 11:06, , 1F
推~
11/09 11:06, 1F

11/30 15:56, , 2F
推推推 讚
11/30 15:56, 2F

12/09 16:23, , 3F
這篇很實用應該m起來^^
12/09 16:23, 3F

12/09 16:23, , 4F
2011/12/09推文
12/09 16:23, 4F

01/28 01:26, , 5F
推!
01/28 01:26, 5F

01/08 16:45, , 6F
2014/01/08朝聖
01/08 16:45, 6F
文章代碼(AID): #193c-j0A (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #193c-j0A (MATLAB)