我有一些Python代码,我想在Matlab中运行。假设你有两个相同长度的列表:
x = [0, 2, 2, 5, 8, 10]
y = [0,2, 4, 7, 3, 3]
P = np.copy(y)
P.sort()
P = np.unique(P, axis=0) # P = [0 2 3 4 7] Takes the list y, sorts it and removes repeated elements
s = list(zip(x,y)) #match list x with y: s = [(0, 0), (2, 2), (2, 4), (5, 7), (8, 3), (10, 3)]
for y_1,y_2 in zip(P,P[1:]): # runs over (0, 2), (2, 3), (3, 4), (4, 7)
for v_1,v_2 in zip(s, s[1:]):
-- process --
字符串
在这种情况下:
list(zip(s, s[1:])) = [((0, 0), (2, 2)), ((2, 2), (2, 4)), ((2, 4), (5, 7)), ((5, 7), (8, 3)), ((8, 3), (10, 3))]
型
我想在Matlab中翻译这个,但我不知道如何复制zip
函数。有什么办法吗?
3条答案
按热度按时间hxzsmxv21#
MATLAB没有
zip
,但是你可以用不同的方法完成同样的事情。我认为最简单的翻译字符串
为
型
一般来说,对
zip(x,y)
的迭代是通过对索引1:numel(x)
进行迭代来完成的,然后使用循环索引索引到数组x
和y
。yqkkidmi2#
下面是Python的
zip
函数在Matlab中的实现。字符串
但不要使用它;表演会很糟糕。在Matlab中,您希望将事物保存在并行原始数组中,并对这些数组使用向量化操作。或者,如果必须的话,迭代数组索引。
ltqd579y3#
zip
列表解析可以通过个字符
或者,作为一个一行程序(返回2x2矩阵)
型
在Python中是
当输入很小时,它们是公平的选择。如果速度/内存是问题,最好专注于MATLAB高效的命令(小心副本)。
可以将其推广到任意数量的列表和理解逻辑(任意函数而不是
*0
)并引入条件;我已经为dictionary
here做了这个。其他答案中的替代,我特别喜欢@AndrewJanke的评论(纯for循环)
型