matlab难以进行python代码转换

时间:2014-01-09 11:21:04

标签: python 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

我想将其转换为python代码

输入值为:

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));

2 个答案:

答案 0 :(得分:1)

del是MATLAB代码中的数组。所以del(1) = 0相当于del_list = [0](MATLAB数组是1索引的,del是python中的保留字。)

在for循环中,这相当于:

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

以上在纯python中不起作用(数组减法不起作用)。你必须添加numpy或数字) - 但希望你明白了。

答案 1 :(得分:1)

对于它的价值,这里是在Matlab中获取del(2:end)的矢量化方式,也许这对你更有意义:

sqrt(sum(diff(M,1,2).^2))