Grafico di funzione non assegnata

fab_mar9093
Salve,
vorrei sapere se c'e un programma che può fare ciò che richiedo, o se c'è un modo
che voi conosciate.

Ho un grafico, o meglio ho solo l'immagine (due assi cartesiani e i pixel che disegnano il grafico)
Ecco quello che vorrei fare:
vorrei tracciare su quest'immagine delle rette parallele all'asse x
tante rette vicine distanziate dello stesso $\Delta y$
Queste rette incontreranno i pixel che appartengono al grafico.
Per ogni retta disegnata vorrei sapere il numero di volte che intercetta il grafico

E' possibile?
grazie a tutti quelli che mi aiuteranno

Risposte
Raptorista1
Va beh dai, ho scritto 'A' ma in realtà è 'M' XD
Ho cambiato lettere a metà, mea culpa!
Comunque A o M è la matrice in cui metti i pixel dell'immagine.

fab_mar9093
"Raptorista":
È una scrittura un po' criptica, ma l'ho scritta proprio per fartela conoscere in caso tu non la conoscessi già.
L'espressione A(i,j) > 0 viene valutata dall'interprete ed assume valore 1 se è vera, 0 se è falsa.
DOPO che l'espressione è stata valutata, il suo valore viene assegnato dall'operatore '=' alla variabile A(i,j), che quindi può valere 1 o 0.
Chiaro?

Gli elementi $A(i,j)$ (prima dell'assegnazione dell'operatore logico) da dove provengono?
Grazie... :D

Raptorista1
È una scrittura un po' criptica, ma l'ho scritta proprio per fartela conoscere in caso tu non la conoscessi già.
L'espressione A(i,j) > 0 viene valutata dall'interprete ed assume valore 1 se è vera, 0 se è falsa.
DOPO che l'espressione è stata valutata, il suo valore viene assegnato dall'operatore '=' alla variabile A(i,j), che quindi può valere 1 o 0.
Chiaro?

fab_mar9093
"Raptorista":
Concordo con dissonance su entrambe le parti.

Sulla seconda, aggiungerei che anche con matlab non dovrebbe essere difficile: con non-so-quale-funzione converti l'immagine in una matrice che contiene i pixel e poi fai qualche giochino del tipo
% dopo aver messo l'immagine nella matrice M
[m,n] = size(M)
for i = 1 : m
  for j = 1 : n
    A(i,j) = A(i,j) > 0
  end
end

In questo modo hai degli 1 dove ci sono pixel scuri e 0 dove ci sono pixel bianchi. Ora puoi contare le intersezioni con sum(M(:,j)), facendo attenzione a togliere eventuali pixel di assi cartesiani o altro.


Ho quasi capito... mi è di difficile interpretazione cosa comporti l'uguali nella terz'ultima riga del codice

Raptorista1
Concordo con dissonance su entrambe le parti.

Sulla seconda, aggiungerei che anche con matlab non dovrebbe essere difficile: con non-so-quale-funzione converti l'immagine in una matrice che contiene i pixel e poi fai qualche giochino del tipo
% dopo aver messo l'immagine nella matrice M
[m,n] = size(M)
for i = 1 : m
  for j = 1 : n
    A(i,j) = A(i,j) > 0
  end
end

In questo modo hai degli 1 dove ci sono pixel scuri e 0 dove ci sono pixel bianchi. Ora puoi contare le intersezioni con sum(M(:,j)), facendo attenzione a togliere eventuali pixel di assi cartesiani o altro.

dissonance
@garnak: Mah. Che razza di risposta è "non saprei"? A questo punto non rispondere proprio, no?

Comunque io proverei con MATLAB. Devi scrivere una function che fa il lavoro da te richiesto: in input prende una matrice contenente i pixel del grafico e la spaziatura \(\Delta y\) e in output restituisce una lista, con ogni entrata contenente il numero di intercette della retta orizzontale corrispondente. C'è da smanettare un po', ma non credo sia molto difficile.

fab_mar9093
Grazie dell'interesse :wink:

garnak.olegovitc1
Salve seven,

"seven":
Salve,
vorrei sapere se c'e un programma che può fare ciò che richiedo, o se c'è un modo
che voi conosciate.

Ho un grafico, o meglio ho solo l'immagine (due assi cartesiani e i pixel che disegnano il grafico)
Ecco quello che vorrei fare:
vorrei tracciare su quest'immagine delle rette parallele all'asse x
tante rette vicine distanziate dello stesso $\Delta y$
Queste rette incontreranno i pixel che appartengono al grafico.
Per ogni retta disegnata vorrei sapere il numero di volte che intercetta il grafico

E' possibile?
grazie a tutti quelli che mi aiuteranno


non saprei. :-k :-k :-k :-k

Cordiali saluti

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.