Re: [問題] eval 語法問題

作者: KevinT (凱文踢)   2015-12-23 06:14:02
嘛...我其實也會在莫名其妙的地方用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
作者: s4300026 (s4300026)   2015-12-23 16:07:00
什麼是 Cheers?
作者: celestialgod (天)   2015-12-23 16:24:00
原PO可能叫做清耳屎吧(大誤
作者: profyang (prof)   2015-12-23 17:21:00
這邊應該是加油的意思吧= =
作者: celestialgod (天)   2015-12-23 17:34:00
樓上Cheers
作者: YoursEver (豬是妳)   2015-12-24 13:51:00
可以你乾杯我隨意嗎? :p
作者: cornextreme (Stormblåst)   2015-12-24 15:30:00
Cheers是很常見的結尾語阿...
作者: profyang (prof)   2015-12-24 18:17:00
~( ′▽`)-o▉☆▉o-( ̄▽ ̄ )~

Links booklink

Contact Us: admin [ a t ] ucptt.com