[請益] num2str eval 的使用方法

看板MATLAB作者 (瑞秋賣燈絲)時間11年前 (2014/03/01 19:43), 編輯推噓5(508)
留言13則, 2人參與, 最新討論串1/1
各位板友大家好 小弟對於num2str和eval寫法有點疑惑,時常跑不出來 譬如我想要求矩陣M1的標準差、M2的標準差...M40的標準差,紀錄在STD的矩陣: STD=[] for r = 1:1:40; caculate = ['STD =[STD, std(M' num2str(r)')]']; eval(caculate) end 試了很多次不同的寫法,不過一直錯誤 請問要怎麼寫才對呢? 另外 num2str的 ' ',要包涵任何文字的地方嗎? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 143.167.227.230 ※ 編輯: RachelMcAdam 來自: 143.167.227.230 (03/01 19:45)

03/01 23:04, , 1F
caculate = ['STD =[STD, std(M',num2str(r),')]'];
03/01 23:04, 1F

03/01 23:07, , 2F
阿btw...你calculate拼錯了= = 我照你複製也拼錯 不過這
03/01 23:07, 2F

03/01 23:07, , 3F
不是重點= =
03/01 23:07, 3F

03/01 23:09, , 4F
重點在於 num2str出來的已經是str, 而要把兩個字串串在一
03/01 23:09, 4F

03/01 23:09, , 5F
起最直接的寫法就是 [str1,str2]這樣 所以你的形式就應該
03/01 23:09, 5F

03/01 23:09, , 6F
要是['blablabla',num2str(r),'blabla']這樣
03/01 23:09, 6F

03/01 23:14, , 7F
另外推一個等校的做法:
03/01 23:14, 7F

03/01 23:14, , 8F
calculate = sprintf('STD =[STD, std(M%d)]',1);
03/01 23:14, 8F

03/01 23:14, , 9F
calculate = sprintf('STD =[STD, std(M%d)]',r); 打錯
03/01 23:14, 9F

03/01 23:15, , 10F
這個方法比較不會字串一直被num2str斷開 頗煩的
03/01 23:15, 10F
感謝P大解說,sprintf方式感覺好用很多,我來研究看看怎麼用 話說把 caculate = ['STD =[STD, std(M' num2str(r)')]'] 變成 caculate = ['STD =[STD, std(M' num2str(r) ')]'] 就可以跑出來了,真是神秘orz

03/02 17:14, , 11F
是不是末端的是num2str,所以前端也要一起num2str
03/02 17:14, 11F

03/02 17:15, , 12F
然後再eval(字串)?
03/02 17:15, 12F
※ 編輯: RachelMcAdam 來自: 31.205.2.248 (03/02 21:11)

03/03 02:21, , 13F
那只是你把空格取代了,的功能而已
03/03 02:21, 13F
文章代碼(AID): #1J4SVX6G (MATLAB)
文章代碼(AID): #1J4SVX6G (MATLAB)