[討論] 請問這個程式碼哪裡有問題

看板MATLAB作者 (ReiFu)時間13年前 (2013/01/20 15:28), 編輯推噓5(509)
留言14則, 2人參與, 最新討論串1/1
請先複製以下程式碼 不好意思 clear all for iii = 1:3 for kkk = 1:3 x=[iii 3*iii 2*iii 4*iii]; y=[1+iii 2+2*kkk 4+kkk sqrt(kkk) iii+kkk/2 kkk/iii 6+iii sqrt(iii)]; bHH = figure; set(bHH, 'visible', 'off'); bar(x',y'); saveas(bHH, ['Si' ,int2str(iii),int2str(kkk) ,'.png'] ) eval( [ 'bZwhat' ,int2str(iii),int2str(kkk) , '=', 'bHH',';' ]) end end for iii = 1:3 for kkk = 1:3 eval( [ 'bHH' , '=', 'bZwhat' ,int2str(iii),int2str(kkk) ,';' ]) bHH; hold on; plot(kkk*5,iii*2,'r*'); hold off; saveas(bHH, ['SiGG' ,int2str(iii),int2str(kkk) ,'.png'] ) end end clear all 跑出來會有18個Si開頭的png檔 其中9個是SiGG開頭的 照理來說 SiGG開頭的圖檔應該都剛好有一個紅色星星在裡面 可是9個裡面只有1個有紅色星星 而且那一個裡面一次就跑出9個紅色星星 請問到底是哪裡出問題?該如何修改? 有請專業版友幫我解答 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.103.233 ※ 編輯: ReiFu21 來自: 123.205.103.233 (01/20 15:31)

01/20 16:13, , 1F
檢查hold on 及hold off在迴圈中的位置。
01/20 16:13, 1F

01/20 16:35, , 2F
我試過各種hold的位置變化 可是也都沒用
01/20 16:35, 2F

01/20 20:39, , 3F
你知道hold on是什麼意思嗎?
01/20 20:39, 3F

01/20 21:41, , 4F
跟字面意思一樣 這個圖再堅持一下 我還想加個東西
01/20 21:41, 4F

01/20 22:37, , 5F
所以那張圖沒有hold off過啊?
01/20 22:37, 5F

01/20 22:41, , 6F
喔喔 好像懂了 是說下半迴圈沒有figure 所以hold住的是上
01/20 22:41, 6F

01/20 22:41, , 7F
半迴圈的最後一張圖
01/20 22:41, 7F

01/20 22:43, , 8F
是這樣嗎? 那請問該如何叫出之前的圖令他為新figure?謝謝
01/20 22:43, 8F

01/21 00:10, , 9F
我覺得直接把hold拿掉就會達到你想要的效果
01/21 00:10, 9F

01/21 00:15, , 10F
剛試過沒有用阿 因為我就是要覆蓋上一個星星 一定要用hold
01/21 00:15, 10F

01/21 00:19, , 11F
17張圖都沒變 第18張剩一顆星星在中間 其他全白
01/21 00:19, 11F

01/21 00:47, , 12F
啊,我懂了。直接執行handle(你的bbh)並不會切到該figure。
01/21 00:47, 12F

01/21 00:48, , 13F
你要的是figure(bHH)或是set(0,'CurrentFigure',bHH)
01/21 00:48, 13F

01/21 00:52, , 14F
成功了 感謝 就是在等這一行沒看過的東西XD
01/21 00:52, 14F
文章代碼(AID): #1G-voGCt (MATLAB)