Re: [問題]用eval求矩陣大小已回收
※ 引述《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
12/09 16:23, 3F
→
12/09 16:23, , 4F
12/09 16:23, 4F
推
01/28 01:26, , 5F
01/28 01:26, 5F
推
01/08 16:45, , 6F
01/08 16:45, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章