这是我的代码
function[ox,oy,oz,gx,gy,gz]=chen(acc)x=acc(:,1);
y=acc(:,2);
z=acc(:,3);xdata=[x,y,z];
ydata=z.^2;
ori=ones(1,6);F=@(k,xdata) k(1)*xdata(:,1).^2+k(2)*xdata(:,2).^2+k(3)*xdata(:,1)+k(4)*xdata(:,2)+k(5)*xdata(:,3)+k(6);
[k,~]=lsqcurvefit(F,ori,xdata,ydata);ox=-k(3)/k(1)/2;
oy=-k(4)/k(2)/2;
oz=k(5)/2;
gz=sqrt(16384.^2/(oz.^2+k(6)-k(1)*ox.^2-k(2)*oy.^2));
gy=sqrt(k(2)*gz.^2);
gx=sqrt(k(1)*gz.^2);disp(ox);
disp(oy);
disp(oz);
disp(gx);
disp(gy);
disp(gz);end
ox oy oz 是偏移量 gx gy gz是缩放量 算出来结果居然是复数。。。
function[ox,oy,oz,gx,gy,gz]=chen(acc)x=acc(:,1);
y=acc(:,2);
z=acc(:,3);xdata=[x,y,z];
ydata=z.^2;
ori=ones(1,6);F=@(k,xdata) k(1)*xdata(:,1).^2+k(2)*xdata(:,2).^2+k(3)*xdata(:,1)+k(4)*xdata(:,2)+k(5)*xdata(:,3)+k(6);
[k,~]=lsqcurvefit(F,ori,xdata,ydata);ox=-k(3)/k(1)/2;
oy=-k(4)/k(2)/2;
oz=k(5)/2;
gz=sqrt(16384.^2/(oz.^2+k(6)-k(1)*ox.^2-k(2)*oy.^2));
gy=sqrt(k(2)*gz.^2);
gx=sqrt(k(1)*gz.^2);disp(ox);
disp(oy);
disp(oz);
disp(gx);
disp(gy);
disp(gz);end
ox oy oz 是偏移量 gx gy gz是缩放量 算出来结果居然是复数。。。