2014-01-06 162 views
0

我正在将matlab转换为python代码。
我不明白这两行代码。将matlab转换为python代码

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

这2行是干什么的?任何人都可以解释我?
以及我将如何在python中进行转换?

+0

是否尝试过在MATLAB中打印零件的结果?你得到了什么? – Christian

+0

我没有matlab,但我需要做转换 – sam

+2

尝试[this](http://www.compileonline.com/execute_matlab_online.php)在线运行MATLAB代码。 – Christian

回答

2

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

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

1

d1:第二列和第一3行的s

d2的第一列之间的差:在第一的最后一列前最后一列和所述一个之间的差3排s

您可以测试它online

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作为点:Matlab的

# 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] 

结果:

--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/

+0

我可能更喜欢'np.array([[1,2,3,4,5],[6,7,8, 9,10],[11,12,13,14,15]])'那里 - 请注意,您不需要'\'在'{[(' – Eric

+0

@Eric')内继续行您的观点完全正确。我们只是试着尽可能地保持类似'Matlab'代码的'Python'转换。 – Developer

+0

另外,你真的不应该在python中使用分号 – Eric