我正在研究matlab转换代码到python 我不明白这两行代码。
d1 = s(1:3,2) - s(1:3,1);
d2 = s(1:3,end) - s(1:3,end-1);
这两条线在做什么?任何人都可以解释我吗? 我将如何在python中转换它?
答案 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]
他们匹配。
答案 1 :(得分:2)
是一个矩阵。 s(1:3,2)从第1行到第3行和第2列创建一个向量。 s(1:3,1)从第1行到第3行和第1列创建一个向量。 然后d1是另一个矢量,它是元素差异
end是最后一行或列的特殊语法。 end-1是倒数第二行/列
答案 2 :(得分:1)