How to interpolate a cloud of points?
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Francesco Pignatelli
le 25 Juil 2022
Commenté : Francesco Pignatelli
le 26 Juil 2022
Hello all,
I have an set of 2D mean values from which I would like to compute the largest values. My 2D matrix is store so:
[rows, columns, count_there] = find(store == max(store));
By plotting rows vs columns I get the following picture:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1076700/image.png)
I was wondering if there is any way to interpolate these data to get something like:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1076705/image.png)
and to compute the length of it.
0 commentaires
Réponse acceptée
Matt J
le 25 Juil 2022
Modifié(e) : Matt J
le 25 Juil 2022
I've no way of testing this without your row/column data, but:
[rows, columns, count_there] = find(store == max(store));
[idx,edges]=discretize(columns,20);
edgectr=conv2(edges,[1,1]/2,'valid')';
G=findgroups(idx);
rowctr=splitapply(@median,rows,G);
colctr=splitapply(@(x) x(1),edgectr(idx),G);
scatter(rows,columns); hold on
plot(rowctr, colctr,'k-o','LineWidth',3); hold off
Length=sum(vecnorm(diff([rowctr(:),edgectr(:)]),2,2))
11 commentaires
Matt J
le 26 Juil 2022
Modifié(e) : Matt J
le 26 Juil 2022
This File Exchange file seems to do a decent job,
load store
[rows, columns, count_there] = find(store == max(store));
[idx,edges]=discretize(columns,20);
edgectr=conv2(edges,[1,1]/2,'valid')';
G=findgroups(idx);
rowctr=splitapply(@median,rows,G);
colctr=splitapply(@(x) x(1),edgectr(idx),G);
scatter(rows,columns); hold on
plot(rowctr, colctr,'k-o','LineWidth',3);
verticals=[600,700,800];
for i=1:numel(verticals)
[x0,y0]=intersections(rowctr,colctr,verticals(i)*[1,1],[0,1000]);
plot(x0,y0,'x--r');
valuesum(i)=sum(y0);
end; hold off
valuesum
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!