2014-01-06 158 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