fit line to 3D scatterplot
26 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I'm trying to add a linear fit to my 3d scatterplot, is there an easy function that let's me do this? Thanks!
Here's my code:
sessions = [12
12
12
12
12
12
12
12
21
21
21
21
12
12
12
12];
VASdelta = [50.5
50.5
50.5
50.5
9
9
9
9
50
50
50
50
40
40
40
40];
relPower = [NaN
13.39162848
-5.151906173
22.74039589
-6.608297044
-11.53044932
-8.162916339
-9.332208193
9.440958586
44.6072671
NaN
NaN
-2.527864912
9.2589486
-11.9690337
-27.36570581];
personC = [[0.9 0.1 0];
[0.9 0.1 0];
[0.9 0.1 0];
[0.9 0.1 0];
[0 0.5 0];
[0 0.5 0];
[0 0.5 0];
[0 0.5 0];
[0 0 1];
[0 0 1];
[0 0 1];
[0 0 1];
[0 0 0];
[0 0 0];
[0 0 0];
[0 0 0];
];
scatter3(VASdelta,relPower,sessions, 50, personC, 'filled');
xlabel("Change in VAS scores")
ylabel("Change in relative delta band power (%)")
zlabel("Number of sessions")
scatter(VASdelta,relPower,(sessions/21)*50, personC, 'filled');
xlabel("Change in VAS scores")
ylabel("Change in relative delta band power (%)")
0 Kommentare
Antworten (1)
Askic V
am 21 Mai 2023
Bearbeitet: Askic V
am 21 Mai 2023
I'm not really sure what you want to achieve here, but if you have X and Y data and want to do a linear fit, then you can construct a line, but if you have a 3D data, then you can construct a plane to be a linear fit in case
Z = function (X,Y).
This is a small example how to construct plane as a result of linear square fit method:
clear; clc; close all
% Input random data
X = randi(10,1,10); % Replace x1, x2, ..., x10 with the actual x values
Y = randi(10,1,10); % Replace y1, y2, ..., y10 with the actual y values
Z = randi(5,1,10); % Replace z1, z2, ..., z10 with the actual z values
% Perform least squares fit
A = [X(:), Y(:), ones(10, 1)];
coefficients = lsqlin([X(:), Y(:), ones(10, 1)],Z(:))
% Extract the calculated parameters
a = coefficients(1); b = coefficients(2); c = coefficients(3);
% Generate points as a mesh grid
x_data = linspace(min(X), max(X), 100);
y_data = linspace(min(Y), max(Y), 100);
[X_data, Y_data] = meshgrid(x_data, y_data);
Z_line = a*X_data + b*Y_data + c;
% Plot the data points and the line
scatter3(X, Y, Z, 50, 'filled', 'MarkerFaceColor', 'b');
hold on;
mesh(X_data, Y_data, Z_line, 'EdgeColor', 'r');
xlabel('X'); ylabel('Y'); zlabel('Z'); zlim([0 10]);
title('3D Linear Fit');
grid on;
hold off;
0 Kommentare
Siehe auch
Kategorien
Mehr zu Fit Postprocessing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!