作者celestialgod (攸蓝)
看板MATLAB
标题Re: For 双重回圈,显示问题
时间Sat Jul 25 17:09:34 2015
※ 引述《ccchain (阳光沙滩脚踏车~)》之铭言:
: ※ 引述《celestialgod (攸蓝)》之铭言:
: : 你要的应该是这样?
: : for i = 1:6
: : for j = (i+1):6
: : eval(['compare', num2str(i), num2str(j), '= dist(A(', ...
: : num2str(i), '), B(', num2str(j), ');']);
: : end
: : end
: 请问 只能用eval存有变数跟文字混在一起? 还是有其它方法可以答到同样效果?
: For i=1:3
: For j=1:3
: Compare (I,j)=i*j ;
: End
: End
: 因为若是用eval, 我不知道该怎麽取
: eval(['compare', num2str(I),num2str(j)...])
: 是直接拿compare (I)(j)?
: 谢谢。刚练习matlab不久,问题太浅,请各位大大耐心指导,感恩。
你可以考虑其他的资料格式: cell
out = cell(3, 3);
for i = 1:3
for j = 1:3
out{i, j} = i*j;
end
end
每一个cell可以存struct (field), ND array, ...各种类型的变数
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.205.27.107
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1437815377.A.52C.html
1F:推 profyang: 痾...只是存个i*j为啥要用到cell...直接out=zeros(3,3) 07/25 17:14
2F:→ profyang: 然後out(i,j)=i*j; 这样不好? 07/25 17:14
3F:→ profyang: 何况只是相乘的话 我会先用meshgrid展开他再直接.*就不 07/25 17:15
4F:→ profyang: 用for回圈了 07/25 17:15
他应该只是要一个简单的例子,去避免使用eval而已
他後面可能要接一个function带入i, j
在我不知道output的情况下,我建议他用cell处理
如果i*j,最快的方法应该是bsxfun(@times, 1:3, [1:3]')
※ 编辑: celestialgod (123.205.27.107), 07/25/2015 17:45:30
5F:推 profyang: 真的是bsxfun比较快 看来是meshgrid展开花到额外资源了 07/25 18:48