【发布时间】:2014-09-02 11:22:30
【问题描述】:
我在 Python 中有以下代码,如果可能的话,我想在不使用 eval 语法的情况下在 MATLAB 中实现类似的东西。
重点是从不规则矩阵创建水平和垂直向量并将它们保存为变量。在 python 中,这很简单,但我在不使用 eval 的情况下在 MATLAB 中实现它时遇到了问题。有任何想法吗?非常感谢!
例如在 python 中:
x,y = 3,5
matrix = np.zeros((x,y))
matrix_T = matrix.reshape(y,x)
array_names_y = ['name_y_%d' %i for i in xrange(y)]
array_names_x = ['name_x_%d' %i for i in xrange(x)]
for i in xrange(len(array_names_x)):
for name,row in zip(array_names_x,matrix):
globals()[name]=row
for i in xrange(len(array_names_y)):
for name,column in zip(array_names_y,matrix_T):
globals()[name]=column
输出是这样的:
列:
name_y_0 = [ 0. 0. 0.]
name_y_1 = [ 0. 0. 0.]
name_y_2 = [ 0. 0. 0.]
name_y_3 = [ 0. 0. 0.]
name_y_4 = [ 0. 0. 0.]
rows:
name_x_0 = [ 0. 0. 0. 0. 0.]
name_x_1 = [ 0. 0. 0. 0. 0.]
name_x_2 = [ 0. 0. 0. 0. 0.]
我想这样做以便稍后对每个行/列向量应用分析。
【问题讨论】:
-
你能解释一下你想要什么吗?
-
ARGH!!! 为什么?!?为什么你会想要那样做?动态创建变量从不是正确的做法。我的建议是:将您的 python 代码更改为 not 与
globals()混淆,然后该代码将几乎 1 对 1 映射到 MATLAB(从而也解决了您提出的问题)。阅读How do I make a series of variables A1, A2, A3, ... A10? -
您不能使用元胞数组吗?但是,如果您确实想这样做,那么为什么不使用
eval?正如 Bakuriu 所提到的,这是一个糟糕的主意,但如果您坚持这样做,那么使用eval是“正确”的方法。但就像我说的,宁可使用元胞数组或结构体
标签: python matlab loops variables save