Determinare appartenenza ad una soglia in un vettore - urgen

di il
13 risposte

Determinare appartenenza ad una soglia in un vettore - urgen

Salve a tutti!
vorrei chiedervi consiglio su una parte di un programmino che devo sviluppare per la mia tesi, è urgente perchè i tempi stringono:
in pratica devo fare una simulazione montecarlo e mi sono bloccato nel momento in cui dopo aver trovato dei numeri casuali devo utilizzare questi per vedere in quale soglia sono finito su un vettore, mi spiego meglio;
ho 3 vettori composti da 8 valori che sono crescenti in quanto derivati da una somma cumulata; devo effettuare un numero N (mettiamo N=10) di simulazioni nelle quali vado prima a generare dei numeri casuali con mvnrnd(MU,SIGMA,N), ottengo quindi una matrice Nx3, poi devo prendere ognuno di questi valori generati su una riga e confrontarli con i 3 vettori nello stesso ordine in cui sono, ovvero 1°valore 1°vettore 2°valore 2°vettore 3°valore 3° vettore, essendo i valori dei vettori da 8 valori ordinati(sono delle soglie) mi serve sapere ognuno dei valori generati al di sotto di quale soglia sia, questo per ognuna delle righe della matrice Nx3. Io ho strutturato così ma poi mi sono bloccato:
sogliaa %vettori delle soglie, con numeri crescenti
 sogliab
 sogliac
 
R=mvnrnd(mu,sigma,10) %matrice Nx3
 for i=1:10
 for j=1:3
 X=R(i,j)
%ora qui devo associare questo R a una delle soglie per poi esplicitarlo che mi servirà più avanti.

come posso fare?
vi ringrazio in anticipo se riuscirete ad aiutarmi!

13 Risposte

  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Potresti fare un esempio?
    Hai la matrice Nx3. Prendi la prima riga, ad esempio [4 5 6]
    prendi il primo numero, quindi in questo caso il 4 e lo confronti con sogaliaa che è un vettore di numeri crescenti.
    poi il 5 lo confronti con sogliab e il 6 con sogliac. è così?
    E cosa ti aspetteresti come risultato?
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Si è così!
    per esempio se finisce sotto la prima soglia mi deve dare come risultato a, sotto la seconda b, sotto la terza c ecc
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Allora, ti faccio un esempio di confronto tra due vettori, poi lo metti nel ciclo.
    questi sono i dati di esempio:
    v=[0.5 5.2 2.3]
    soglia=[1 2 3 4 5 6 7 8 9 10]
    se tu scrivi
    v(1)<soglia
    ti darà un vettore della lunghezza del vettore delle soglie, dove ci sarà un 1 se il valore è minore della soglia, uno 0 se è maggiore.
    in questo caso sarà un vettore di soli 1, perché 0.5 è minore di tutte le soglie
    se scrivi
    v(2)<soglia
    ti darà questo vettore
    0 0 0 0 0 1 1 1 1 1
    Quindi, il valore di soglia in corrispondenza del primo 1 è quello che ti interessa. In questo caso, dato che v(2)=5.2, il valore è 6.

    Per trovare il primo 1 basta scrivere così:
    c=v(2)<soglia
    pos=find(c==1)
    pos(1)
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Ok provo a inserire il procedimento nel contesto e nel ciclo. Dovrebbe andare!
    sarai ancora online nel pomeriggio nel caso qualcosa non dovesse andare nel verso giusto?
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Fino alle 5. Comunque se dovessi avere bisogno scrivi lo stesso che se posso rispondo.
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Ok funziona! ora però viene un'altra parte sulla quale sono da 2 giorni e non riesco a sbloccarmi:
    una volta ottenuto queste posizioni le nomino con delle lettere con un if, quindi nel mio caso il vettore era di 8 elementi ed ottengo 8 possibili classi.
    il mio vettore di 3 avrà quindi per ognuno degli elementi un rating. ora viene il bello, spero di riuscire a spiegarlo:
    ad ognuno dei 3 valori ci sono legati un tot di titoli, che quindi dopo il passaggio precedente dovranno assumere lo stesso rating, ora come faccio a dire ad ognuno di questi titoli che deve assumere il rating del suo associato"padre"?
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Non ho capito...
    magari fammi un esempio con qualche numero...
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Ok:
    riprendo il tuo esempio,
    v=[0.5 5.2 2.3]
    soglia=[1 2 3 4 5 6 7 8 9 10]
    c=v(2)<soglia
    pos=find(c==1)
    pos(1)
    risultato:
    pos=1
    pos=5
    pos=3
    quindi associo ai numeri una lettera con l'if (1--->def 2---->ccc 3--->b 4--->bb e così via)
    ora questi numeri sono diventati lettere.
    in partenza avevo 3 vettori composti per esempio da 5 6 4 elementi ovvero
    S=(tizio caio sempronio io tu)
    T=(ciccio pluto dado tiro mollo coso)
    P=(idem......)
    ora devo associare ad S la lettera di pos1 a T la lettera di pos5 a P la lettera di Pos3.
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Non capisco cosa intendi per "associare", cosa vorresti avere alla fine?
    Poi, da qualche parte hai qualcosa (cosa?) che dovrebbe fare anche l'"associazione" tra S e pos1, T e pos5... una struttura? una matrice? un indice?
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Guarda forse faccio prima a spiegarti l'argomento che magari sto impicciando tutto io:
    allora,
    ho 100 titoli suddivisi in 10 classi,
    queste 10 classi hanno una valutazione su una scala da 1 a 8,
    ora faccio una estrazione casuale da mvnrnd in cui estraggo un vettore di 10 valori,
    questi valori inseriti nelle soglie di cui dispongo(10 vettori di 8 valori crescenti) devono darmi come risultato una nuova valutazione, che sarà sempre da 1 a 8.
    una volta ottenuta questa nuova valutazione devo esplicitare la valutazione di tutti e 100 i titoli, per poi dargli un valore che andrò a prendere da una tabella di cui già dispongo ed in cui ci sono i possibili valori dei 100 titoli per ognuna delle possibili evoluzioni future(quindi una matrice 8x100).
    quindi devo sommare il valore dei 100 titoli alla fine di questo procedimento, e ripetere il tutto per 1000 volte.
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Bene, ho capito meno di prima...
    Comunque, come idea generale, se devi trovare dei valori in una tabella che già hai usa sempre l'istruzione find. Questa ti darà le posizioni degli elementi (e quindi delle righe - se ho capito bene) che ti servono su cui poi andrai a fare le elaborazioni.
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Io ho ben capito la teoria del giochino, ma elaborarla su matlab non è affatto semplice(almeno per me)!
    ti ringrazio lo stesso per il tuo aiuto, cercherò di risolvere in qualche maniera...devo! altrimenti mi scoccia un pochino cambiare argomento della tesi ad un mese dalla discussione....
    grazie ancora!
    ciao
  • Re: Determinare appartenenza ad una soglia in un vettore - urgen

    Se riesci a spiegarmi cosa devi fare ti aiuto volentieri.
    Però parla in termini di matrici e valori, e cerca di spiegare nel modo più dettagliato possibile il prossimo passaggio che devi fare (quelli precedenti sono già fatti e ai successivi ci penserai subito dopo... se mi metti tutto insieme non capisco neanche a quale punto della descrizione è la domanda che mi stai facendo).
    Ti posso aiutare solo se mi dici quello che hai e quello che vuoi ottenere.
    "Ho una tabella in cui ci sono delle associazioni, fatta così
    titolo1 valore1
    titolo2 valore2
    e una matrice dove ci sono queste e quelle informazioni.
    Devo ottenere una matrice in cui sulla prima colonna ci sono... e sulla seconda..."
Devi accedere o registrarti per scrivere nel forum
13 risposte