将matlab转换为python代码

时间:2014-01-06 05:39:06

标签: python matlab

我正在研究matlab转换代码到python 我不明白这两行代码。

d1 = s(1:3,2) - s(1:3,1);
d2 = s(1:3,end) - s(1:3,end-1);

这两条线在做什么?任何人都可以解释我吗? 我将如何在python中转换它?

3 个答案:

答案 0 :(得分:3)

在Matlab中:

% Matlab
s = [1,2,3,4,5; ...
    6,7,8,9,10; ...
    11,12,13,14,15];
d1 = s(1:3,2) - s(1:3,1);
d2 = s(1:3,end) - s(1:3,end-1);

disp('--s--')
disp(s)
disp('--d1--')
disp(d1)
disp('--d2--')
disp(d2)

disp('--s(1:3,2)--')
disp(s(1:3,2))
disp('--s(1:3,1)--')
disp(s(1:3,1))

disp('--s(1:3,end)--')
disp(s(1:3,end))
disp('--s(1:3,end-1)--')
disp(s(1:3,end-1))

可以翻译为Python:

# Python
import numpy as np

s = np.asarray([ \
    1,2,3,4,5, \
    6,7,8,9,10, \
    11,12,13,14,15]).reshape(3,-1);
d1 = s[0:3,1] - s[0:3,0];
d2 = s[0:3,-1] - s[:3,-2];

print '--s--'
print s
print '--d1--'
print d1
print '--d2--'
print d2

print '--s[0:3,1]--'
print s[0:3,1]
print '--s[0:3,0]--'
print s[0:3,0]

print '--s[0:3,-1]--'
print s[0:3,-1]
print '--s[0:3,-2]--'
print s[0:3,-2]

Matlab的结果:

--s--
    1    2    3    4    5
    6    7    8    9   10
   11   12   13   14   15
--d1--
   1
   1
   1
--d2--
   1
   1
   1
--s(1:3,2)--
    2
    7
   12
--s(1:3,1)--
    1
    6
   11
--s(1:3,end)--
    5
   10
   15
--s(1:3,end-1)--
    4
    9
   14

vs Python:

--s--
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]]
--d1--
[1 1 1]
--d2--
[1 1 1]
--s[0:3,1]--
[ 2  7 12]
--s[0:3,0]--
[ 1  6 11]
--s[0:3,-1]--
[ 5 10 15]
--s[0:3,-2]--
[ 4  9 14]

他们匹配。

在线评估Matlab代码/here/和Python代码/here//here/以及包/here/

答案 1 :(得分:2)

是一个矩阵。 s(1:3,2)从第1行到第3行和第2列创建一个向量。 s(1:3,1)从第1行到第3行和第1列创建一个向量。 然后d1是另一个矢量,它是元素差异

end是最后一行或列的特殊语法。 end-1是倒数第二行/列

答案 2 :(得分:1)

d1s的前3行的第2列和第1列之间的差异

d2:最后一列与{​​{1}}前三行最后一列之间的差异

您可以对其进行测试online