Re: [問題] eval 語法問題

看板MATLAB作者 (凱文踢)時間9年前 (2015/12/23 06:14), 編輯推噓3(304)
留言7則, 5人參與, 最新討論串1/1
嘛...我其實也會在莫名其妙的地方用eval 主要是為了file io跟盡量不要繼續往下用eval XD anyway 如果施主有你自己的原因,不願意用矩陣index堅持要用eval 希望你看過我覺得可以的寫法之後,也想想板上其他大大建議的方式... 總之 eval是在最外層用就好 裡面就是字串 所以沒有同時用兩個eval這種事情啦... (1) for ii = 1:50 % 盡量不要用i當參數, 因為i default是虛數 eval(sprintf('x%d = b(%d,:);',ii,ii)) end (2) for ii = 1:50 eval(sprintf('I%d = (sum(x%d).^2)/3;',ii,ii)) end % 其實這邊有點奇妙,你先sum完之後再平方再除3,其實不用.^2 或是說你可以用... x = b; I0 = (sum(x,2).^2)/3; 那I0(1)就是上述的I1, I0(2)就是上述的I2,以此類推 這樣是不是比較簡單點? Cheers ※ 引述《HOF (Hall of Fame)》之銘言: : (1) : for i=1:50 : eval(['x' num2str(i) '=b(i,:);']) : end : (2) : for i=1:50 : I0=(sum(eval(['x' num2str(i)])).^2)/3 : end : 請問 : 我把(1)式中從b的行向量命名為X1,X2,,,X50 : 代入(2)做運算 : 並欲把I0改顯示成I1,I2,,,I50,方便日後使用 : 於是我用下列語法合併來顯示I1~I50.但一直顯示錯誤.請問是錯在哪裡? : 煩請指正.謝謝 : for i=1:50 : eval(['I' num2str(i) '= (sum(eval(['x' num2str(i)])).^2)/3;']) : end -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.101.47 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1450822445.A.B56.html

12/23 16:07, , 1F
什麼是 Cheers?
12/23 16:07, 1F

12/23 16:24, , 2F
原PO可能叫做清耳屎吧(大誤
12/23 16:24, 2F

12/23 17:21, , 3F
這邊應該是加油的意思吧= =
12/23 17:21, 3F

12/23 17:34, , 4F
樓上Cheers
12/23 17:34, 4F

12/24 13:51, , 5F
可以你乾杯我隨意嗎? :p
12/24 13:51, 5F

12/24 15:30, , 6F
Cheers是很常見的結尾語阿...
12/24 15:30, 6F

12/24 18:17, , 7F
~( ′▽`)-o▉☆▉o-( ̄▽ ̄ )~
12/24 18:17, 7F
文章代碼(AID): #1MUSijjM (MATLAB)
文章代碼(AID): #1MUSijjM (MATLAB)