matlab 파일을 파이썬 코드로 변환하고 있습니다. 내 MATLAB 파일은 다음과 같습니다matlab에서 python으로 코드 변환
from __future__ import division
import numpy as np
from scipy.io import loadmat,savemat
import os
def curve_to_q(p):
n, N = p.shape # nargout=2
for i in range(1, (n +1)):
v[(i -1), :] = np.gradient(p[(i -1), :], 1/(N))
len_ = np.sum(np.sqrt(np.sum(v.np.dot(v))))/N
v = v/len_
for i in range(1, (N +1)):
L[(i -1)] = sqrt(norm(v[:, (i -1)]))
if L[(i -1)] > 0.0001:
q[:, (i -1)] = v[:, (i -1)]/L[(i -1)]
else:
q[:, (i -1)] = v[:, (i -1)] * 0.0001
return q, len_
하지만, 내가 어떻게 할 수
len_ = np.sum(np.sqrt(np.sum(v.np.dot(v))))/N
및
L[(i -1)] = sqrt(norm(v[:, (i -1)]))
에 문제가있는 것 같다
function [q,len] = curve_to_q(p)
[n,N] = size(p);
for i = 1:n
v(i,:) = gradient(p(i,:),1/(N));
end
len = sum(sqrt(sum(v.*v)))/N;
v = v/len;
for i = 1:N
L(i) = sqrt(norm(v(:,i)));
if L(i) > 0.0001
q(:,i) = v(:,i)/L(i);
else
q(:,i) = v(:,i)*0.0001;
end
end
변환 코드는 파이썬으로의 적절한 변환?
어떤 종류의 문제입니까? – ShinTakezou
먼저,'v'를'curve_to_q'의 어느 곳에서나 초기화하도록 정의하지 않습니다. 이것은 문제를 일으킬 수 있습니다. 'L'과 동일합니다. 'v'가 배열 인 경우,'np.dot'가 아니라'*'를 사용해야하고'v'가 행렬 인 경우'np.multiply'를 사용해야합니다 ('. *'를 원하기 때문에, 이는 행렬 곱셈이 아니라 요소 승법). – senshin
@ShinTakezou : np.sum (v.np.dot (v))가 파이썬에서 어떻게 작동하는지 이해할 수 없습니까? – sam