How to interpolate a cloud of points?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Francesco Pignatelli
il 25 Lug 2022
Commentato: Francesco Pignatelli
il 26 Lug 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 Commenti
Risposta accettata
Matt J
il 25 Lug 2022
Modificato: Matt J
il 25 Lug 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 Commenti
Matt J
il 26 Lug 2022
Modificato: Matt J
il 26 Lug 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
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!