Filtrare matrice di coordinate

di il
4 risposte

Filtrare matrice di coordinate

Salve a tutti!
ho una matrice di coordinate (x, y) che devo filtrare in funzione della distanza da un insieme di rette. Ho calcolato la distanza, banalmente con la formula geometrica punto-retta, ora devo ridurre la matrice delle coordinate e scartare le coppie che restituiscono una distanza maggiore di 10 m, ma non so proprio come fare! Qualcuno potrebbe aiutarmi?

4 Risposte

  • Re: Filtrare matrice di coordinate

    
    %%% matr_input dovrebbe essere la tua matrice delle coppie di coordinate che hai
    matr_input=rand(20,2);
    %%%% dist è il tuo vettore contenente le distanze dei punti dalle rette
    dist=randi(20,20,1);
    %%%% matr_output è la matrice che contiene solo le coppie di coordinate con distanza inferiore a 10
    Matr_output=matr_input(find(dist<10),:)
    
    Se usi questo codice assicurati che l'ordine delle coordinate dei punti e quello del vettore dist siano uguali.
  • Re: Filtrare matrice di coordinate

    Grazie per la risposta! L'ordine delle matrici non è uguale perchè le coppie di coordinate sono 5855 e le rette sono invece 3924. Avendo calcolato la distanza dell'i-esimo punto da ogni retta, ho una matrice 3924*5855 e quindi applicando il codice che mi hai suggerito mi restituisce errore. Hai altri suggerimenti su come procedere?
  • Re: Filtrare matrice di coordinate

    Ti interessano solo i punti che hanno una distanza inferiore a 10 da tutte le 3924 rette?
    Se è così forse questo ti può tornare utile.
    
    %% matrice coodrinate
    matr_coord=randi(40,5855,2);
    %% matrice delle distanze, se la tua è una matrice 3924x5855 fai una trasposta della tua
    matr_dist=randi(40,5855,3924);
    %%% trovo le distanze che rispettano la condizione richiesta 
    matr_dist_log=matr_dist<10;
    %%% creo la matrice che contiene le coordinate dei punti la cui distanza da ogni retta è inferiore a 10
    Matr_output=matr_coord(find(all(matr_dist_log==1,2)),:);
    
    
    Spero di aver inquadrato il problema.
  • Re: Filtrare matrice di coordinate

    Hai inquadrato in pieno il problema, ma che purtroppo persiste!
    la matrice "matr_dist_log" essendo una matrice di tipo logical non da risultati; ho ovviato così:

    %% matrice coodrinate
    matr_coord=randi(40,5855,2);
    %% matrice delle distanze, se la tua è una matrice 3924x5855 fai una trasposta della tua
    matr_dist=randi(40,5855,3924);
    %%% trovo le distanze che rispettano la condizione richiesta
    matr_dist_log=matr_dist<10;
    sum_matr_dist_log=sum(matr_dist_log);
    %%% creo la matrice che contiene le coordinate dei punti la cui distanza da ogni retta è inferiore a 10
    Matr_output=matr_coord(find(sum_matr_dist_log>0),:);


    Plottando i risultati su QGIS noto che molti punti parecchio vicini alle rette non sono comunque stati considerati e quindi deduco che l'ultimo comando non soddisfi a pieno la ricerca
Devi accedere o registrarti per scrivere nel forum
4 risposte