matlab中“执行字符串”函数eval在不同情况下的用法(二)

ii=2;

ij=3;

H=[];

当使用H_2_3这样的格式存储数据时:


K>> eval(['HHHH_' num2str(ii) '_' num2str(ij) '=1'])


HHHH_2_3 =
     1


K>> eval(['HHHH_ii_ij=1'])


HHHH_ii_ij =
     1


注意:两种操作得到的结果不同


当使用H(2,3)这样的格式存储时

K>> eval(['HHH(' num2str(ii) ',' num2str(ij) ')=1'])


HHH =
     0     0     0
     0     0     1


K>> eval('HHH(ii,ij)=1')


HHH =
     0     0     0
     0     0     1


注意:两种操作得到的结果相同,而且后一种表达式更易读


原因在于对于H(ii,ij)编译器会自动识别ii,ij,执行H(2,3)赋值操作;

而对于H_ii_ij编译器无法识别ii,ij为变量,只能用不易读的赋值方法。

你可能感兴趣的:(matlab)