绘制3D线,MATLAB(plot 3D line, matlab)

2019-09-17 18:14发布

我的问题是非常标准的,但不能找到一个解决方案。

我点= [X,Y,Z],并要绘制最佳拟合线。

我使用如下函数(感谢名单史密斯)

% LS3DLINE.M   Least-squares line in 3 dimensions.
%
% Version 1.0    
% Last amended   I M Smith 27 May 2002. 
% Created        I M Smith 08 Mar 2002
% ---------------------------------------------------------------------
% Input    
% X        Array [x y z] where x = vector of x-coordinates, 
%          y = vector of y-coordinates and z = vector of 
%          z-coordinates. 
%          Dimension: m x 3. 
% 
% Output   
% x0       Centroid of the data = point on the best-fit line.
%          Dimension: 3 x 1. 
% 
% a        Direction cosines of the best-fit line. 
%          Dimension: 3 x 1.
% 
% <Optional... 
% d        Residuals. 
%          Dimension: m x 1. 
% 
% normd    Norm of residual errors. 
%          Dimension: 1 x 1. 
% ...>
%
% [x0, a <, d, normd >] = ls3dline(X)

我有一个。 所以公式可能

points*a+dist=0

其中DIST是分钟。 从origon距离。

现在的问题是如何绘制最好FILT线3D。

Answer 1:

它有助于实际读取的功能,它采用奇异值分解的内容。

% calculate centroid
  x0 = mean(X)';

% form matrix A of translated points
  A = [(X(:, 1) - x0(1)) (X(:, 2) - x0(2)) (X(:, 3) - x0(3))];

% calculate the SVD of A
  [U, S, V] = svd(A, 0);

% find the largest singular value in S and extract from V the
% corresponding right singular vector
  [s, i] = max(diag(S));
  a = V(:, i);

最好的正交拟合线

P = X 0 +α*吨

作为参数t而变化。 这是最大变化,这意味着在正交方向上的变化为最小的方向。 点正交距离这条线的平方和被最小化。

这是从中从回归的线在y的变化最小化的线性回归不同。 这回归假设,所有的错误都是在y坐标,而垂直装配假设错误在x和y坐标等于预期的幅度。

[信用:罗杰斯塔福德,http://www.mathworks.com/matlabcentral/newsreader/view_thread/294030]

然后,你只需要创建一些T和绘制它:

for t=0:100,
P(t,:) = x0 + a.*t;
end
scatter3(P(:,1),P(:,2),P(:,3));

您可能需要使用plot3()来代替,在这种情况下,你只需要一对点。 由于线路是无限的定义,它是由你来决定它应该开始和结束(取决于应用程序)。



文章来源: plot 3D line, matlab