2014-01-09 3 views
0

Я преобразования кода MatLab в питона кодтрудности в MATLAB для преобразования кода Python

function Xn = ReSampleCurve(X,N) 

    [n,T] = size(X); 
    del(1) = 0; 
    for r = 2:T 
     del(r) = norm(X(:,r) - X(:,r-1)); 
    end 
    cumdel = cumsum(del)/sum(del); 

    newdel = [0:N-1]/(N-1); 

    for j=1:n 
     Xn(j,:) = interp1(cumdel,X(j,1:T),newdel,'linear'); 
    end 

Я хочу, чтобы преобразовать это в питона код

Значения входных сигналов:

X = [[-9.035250067710876, 7.453250169754028, 33.34074878692627], [-6.63700008392334, 5.132999956607819, 31.66075038909912],[-5.1272499561309814, 8.251499891281128, 30.925999641418457], [-5.1272499561309814, 8.251499891281128, 30.925999641418457]] 
N = 200 

может кто-нибудь объясняет мне, что делают эти строки?

del(1) = 0; 
    for r = 2:T 
     del(r) = norm(X(:,r) - X(:,r-1)); 
+1

вы всегда можете попробовать http://freemat.sourceforge.net/ и запустите matlab-код, чтобы убедиться сами ... –

ответ

1

del - массив в коде MATLAB. Таким образом, del(1) = 0 эквивалентен del_list = [0] (массивы MATLAB с 1-индексированным, del - зарезервированное слово в python).

В течение цикла, это эквивалентно:

for r in range(1,T): 
    del_list.append(norm(X[:,r] - X[:,r-1])) 

выше не будет работать в чистом питоне (массив вычитания не будет работать). Вам нужно добавить numpy или numeric), но, надеюсь, вы получите эту идею.

1

Для чего это стоит, вот Векторизованный способ получить del(2:end) в Matlab, возможно, это имеет смысл для вас:

sqrt(sum(diff(M,1,2).^2)) 
Смежные вопросы