Matlab: funzione find
Prima di tutto un saluto a tutti. Sono nuovo del forum e ringrazio chiunque potrà aiutarmi.
Sto cercando di simulare un book di negoziazione con matlab, per farla breve ho creato una matrice A(5,4), nella prima e terza colonna ho dei prezzi esemp:
[0.94;0.93;0.92;0.91;0.90] nella prima colonna e [0.95;0.96;0.97;0.98;0.99] nella terza colonna. Mentre nella seconda e quarta colonna ho delle quantità.
Ho generato dei numeri casuali e un ciclo for, che utilizza questi numeri casuali per modificare le quantità della matrice A. Questo mi comporta che ad ogni step del ciclo for, possono cambiare anche i prezzi.
A me interessa sapere ad ogni step del ciclo for quale posizione occupano i prezzi 0.93 e 0.96 che si trovano rispettivamente nella prima e nella terza colonna. Ho utilizzato quindi il comando find, in modo da ottenere, ogni volta che il ciclo ricomincia, la posizione di 0.93 se si verifica una situazione e 0.96 se si verifica la situazione opposta.
Es: m=find(A(:,1)==0.93)
Quando lancio il programma Matlab mi da la posizione corretta ( m=2) di 0.93. Qando però il book di negoziazione si modifica e 0.93 passa dalla seconda alla prima riga, Matlab mi da la dicitura:
Empty matrix: 0-by-1
come se non ci fosse il prezzo 0.93 all'interno della prima colonna di A. Invece se vado a controllare il prezzo 0.93 c'è, solo che è passato dalla seconda alla prima riga.
Se qualcuno mi può aiutare, le sto provando tutte e ormai non so più cosa fare.
Grazie
Sto cercando di simulare un book di negoziazione con matlab, per farla breve ho creato una matrice A(5,4), nella prima e terza colonna ho dei prezzi esemp:
[0.94;0.93;0.92;0.91;0.90] nella prima colonna e [0.95;0.96;0.97;0.98;0.99] nella terza colonna. Mentre nella seconda e quarta colonna ho delle quantità.
Ho generato dei numeri casuali e un ciclo for, che utilizza questi numeri casuali per modificare le quantità della matrice A. Questo mi comporta che ad ogni step del ciclo for, possono cambiare anche i prezzi.
A me interessa sapere ad ogni step del ciclo for quale posizione occupano i prezzi 0.93 e 0.96 che si trovano rispettivamente nella prima e nella terza colonna. Ho utilizzato quindi il comando find, in modo da ottenere, ogni volta che il ciclo ricomincia, la posizione di 0.93 se si verifica una situazione e 0.96 se si verifica la situazione opposta.
Es: m=find(A(:,1)==0.93)
Quando lancio il programma Matlab mi da la posizione corretta ( m=2) di 0.93. Qando però il book di negoziazione si modifica e 0.93 passa dalla seconda alla prima riga, Matlab mi da la dicitura:
Empty matrix: 0-by-1

come se non ci fosse il prezzo 0.93 all'interno della prima colonna di A. Invece se vado a controllare il prezzo 0.93 c'è, solo che è passato dalla seconda alla prima riga.
Se qualcuno mi può aiutare, le sto provando tutte e ormai non so più cosa fare.

Grazie
Risposte
Non è che semplicemente quando la matrice si modifica il nuovo $0.93$ non è esattamente $0.93$ ma una sua approssimazione?
Prova a cambiare la condizione $A( :,1)==0.93$ con $abs(A( :,1) - 0.93) < 10^{-7}$ (tirando a caso una tolleranza).
Prova a cambiare la condizione $A( :,1)==0.93$ con $abs(A( :,1) - 0.93) < 10^{-7}$ (tirando a caso una tolleranza).