MatLab Frenet-Serret Function

Hello, I'm looking for some help with a function I've made to return the Frenet-Serret vectors for a 'track' defined by a set of x,y,z coordinates. It seems to work except for the curvature which is certainly wrong. I've tested it with a simple unit circle and the curvature is 0.01, not 1. Any help would be much appreciated.

Thanks

Code:

`function [T,N,B,k,t] = frenet(x,y,z),`

% Frenet - Serret Vecotrs

% T = Tangent

% N = Normal

% B = Binormal

% k = curvature

% t = torsion

% If only x and y inputted, set z to all zeros

if nargin == 2,

z = zeros(size(x));

end

% If x, y and z are row vectors, make them colums

x = x(:);

y = y(:);

z = z(:);

%Set up a dr vector

dx = gradient(x);

dy = gradient(y);

dz = gradient(z);

dr = [dx dy dz];

% The tangent vector

for i=1:size(x)

T(i,:) = dr(i,:)/norm(dr(i,:),2);

end

dTx = gradient(T(:,1));

dTy = gradient(T(:,2));

dTz = gradient(T(:,3));

dT = [dTx dTy dTz];

% The Normal vecotr

for j=1:size(x)

N(j,:) = dT(j,:)/norm(dT(j,:),2);

end

% The binormal vector

B = cross(T,N);

dBx = gradient(B(:,1));

dBy = gradient(B(:,2));

dBz = gradient(B(:,3));

dB = [dBx dBy dBz];

% Curvature

for i=1:length(x)

k(i) = norm(dT(i,:),2);

t(i) = norm(dB(i,:),2);

end