gpt4 book ai didi

matlab - 绘制 3D 线,matlab

转载 作者:行者123 更新时间:2023-12-02 02:20:42 24 4
gpt4 key购买 nike

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

我有点=[x,y,z]并且想要绘制最佳拟合线。

我正在使用下面给出的函数(和 Thanx Smith)

% 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 是最小值。距原点的距离。

现在我的问题是如何在 3D 中绘制最佳过滤线。

最佳答案

它有助于实际读取函数的内容,该函数使用奇异值分解。

% 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 = x0 + a.*t

随着参数 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(),在这种情况下您只需要一对点。由于一条线根据定义是无限的,因此由您决定它的开始和结束位置(取决于应用程序)。

关于matlab - 绘制 3D 线,matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com