作者KevinT (凯文踢)
看板MATLAB
标题Re: [问题] eval 语法问题
时间Wed Dec 23 06:14:02 2015
嘛...我其实也会在莫名其妙的地方用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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1450822445.A.B56.html
1F:→ s4300026: 什麽是 Cheers? 12/23 16:07
2F:→ celestialgod: 原PO可能叫做清耳屎吧(大误 12/23 16:24
3F:推 profyang: 这边应该是加油的意思吧= = 12/23 17:21
4F:推 celestialgod: 楼上Cheers 12/23 17:34
5F:→ YoursEver: 可以你乾杯我随意吗? :p 12/24 13:51
6F:→ cornextreme: Cheers是很常见的结尾语阿... 12/24 15:30
7F:推 profyang: ~( ′▽`)-o▉☆▉o-( ̄▽ ̄ )~ 12/24 18:17