Polyfit on a 3d plot

108 visualizaciones (últimos 30 días)
Fabio Carton
Fabio Carton el 11 de Mayo de 2022
Comentada: Fabio Carton el 12 de Mayo de 2022
Hello everyone,
i'm trying to create a matrix containing the coefficient of a 3rd degree polyfit on each rows with the shape 13000x4.
For that, i have the following data shape:
Time : 13000x1 %time corresponding actually to the number of rows
Position : 13000x4 %the position is just for the sake of the plot (position of the sensor in reality). The four columns have each a constant value over the 13000 rows
Displacement: 13000x4 %measurement in global Z of four sensors.
(see image attached) My purpose is to "slice" the 3d plot at every time "t" (13000 times) and apply a polyfit on the 4 red cross (x = position, y = displacement) in order then to evaluate the curve to obtain the 2 yellow points. Ultimaly, i want to recreate a line out of the yellow points.
Up to now, i was only able to extract a few sets of points (red crosses) at a given time manually. I don't know how to reshape the matrix without creating 13000 submatrix and names associated.
I hope that my explanations are clear enough and that you can give me a little help on that one.
Thanks in advance
Fabio

Respuesta aceptada

dpb
dpb el 11 de Mayo de 2022
That's fairly simple, just loop over the displacement array with a set of the position data to compute that set of coefficients and evaluate them where needed.
nD=size(D,1); % the important size of D
NewD=zeros(nD,2); % for the new points -- could augment D instead but this is simpler
NewP=[300,2400]; % GUESS FOR THE NEW POINT LOCATIONS -- SET AS DESIRED
for i=1:nD % iterate over rows of D
b{i}=polyfit(P(1,:),D(i,:),3); % compute polyfit coefficients for each (hold in cell array)
NewD(i,:)=polyval(b{i},newP); % evaluate and save new positions
end
leaves you with the additional data points at the two positions -- just draw them directly or you could add to the original D array...
  1 comentario
Fabio Carton
Fabio Carton el 12 de Mayo de 2022
Thank you very much!! it was pretty much what i was looking for.
I acknowledge that it can appear easy but i'm still a learner and some loops are still tricky for me.
All the best

Iniciar sesión para comentar.

Más respuestas (0)

Productos


Versión

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by