如果我定义CELLin = {[1,2],[1,2,3];[1,2,3],[1,2,3,4]}
用八度音阶运行你的代码
^{pr2}$
CELLin是一个nx2单元格,NUM给出了扁平布局(n*2行)中单元格元素的某种平均长度。jALL只是一个索引(可能是{})的索引。在
给定CELLin元素的可变长度,最简单的Python翻译使用列表,而不是numpy。列表还允许我在不预先分配的情况下累积结果。例如,MATLAB代码的首字母jALL为(0,0),但它会随着r赋值而增长。在# nested list; best equivalent to CELL
CELLin = [[[1,2],[1,2,3]],[[1,2,3],[1,2,3,4]]]
NUM = []
jALL = []
r = 0
for k, v in enumerate(CELLin): # iterate of 1st level
r += 1
NUM.append( (len(v[0])-1)/2.)
jALL.append([r,1])
r += 1
NUM.append( (len(v[1])-1)/2.)
jALL.append([r,2])
print(CELLin)
print(NUM)
print(jALL)
生产1033:~/mypy$ python stack43742171.py
[[[1, 2], [1, 2, 3]], [[1, 2, 3], [1, 2, 3, 4]]]
[0.5, 1.0, 1.0, 1.5]
[[1, 1], [2, 2], [3, 1], [4, 2]]
如果我加上CELLin = np.array(CELLin)
它变成一个对象数据类型数组(2d和list元素)array([[[1, 2], [1, 2, 3]],
[[1, 2, 3], [1, 2, 3, 4]]], dtype=object)
其余代码运行相同