Istruzione di somma non comprensibile

di il
1 risposte

Istruzione di somma non comprensibile

Ciao a tutti, qualcuno più esperto di me può dirmi se esiste, e in caso cosa significa, questa istruzione di somma per favore?
L'istruzione incriminata è questa:
a=sum(rand(rand(b,1)<c)
In questo caso b è un numero, so che rand(b,1) crea un array di dimensione bx1 di numeri random tra 0 e 1. Nel suo complesso cosa signifca?
Grazie mille a tutti!

1 Risposte

  • Re: Istruzione di somma non comprensibile

    L'istruzione

    a=sum(rand(rand(b,1)<c))

    è errata, infatti, eseguita, da il seguente errore:
    Error using rand
    Size vector should be a row vector with real elements.
    Analizzando l'istruzione:

    [*] rand(b,1): genera in vettore di "b" numeri random
    [*] rand(b,1)<c: verifica quali, degli elementi del vettore di numeri random sia minore di "c". Questa istruzione ritorna un vettore di "b" elementi di tipo "logical": "1" se la condizione è verificata (lo "i-esimo" numero random è "minore di "c", "0" se la condizione non è verificata (lo "i-esimo" numero random è "maggiore o uguale a "c")
    [*] rand(rand(b,1)<c): questa istruzione è sbagliata e genera il messaggio di errore. Alla funzione rand "esterna", viene passato in input un vettore di elementi di tipo "logical" (calcolati nel passaggio precedente), mentre essa richiede in input valori di tipo "integer"
    [*] a=sum(rand(rand(b,1)<c)): l'istruzione "sum" calcola la somma degli elementi del vettore / matrice in input. In questo caso, essendo l'input non valido (come descritto al punto precedente) essa non viene invocata.

    Se si elimina la chiamata alla funzione "rand" più "esterna", l'istruzione diventa:

    a=sum(rand(b,1)<c)

    In questo caso, l'istruzione assume un significato: "conta" la quantità di numeri (random) minori della soglia "c".

    Assumendo:
    [*] b=3
    [*] c=0.33

    e scomponendo l'istruzione (per chiarezza e per "vedere" quali numeri random vengono generati)

    num_rand=rand(b,1)
    idx_num_rand_min_soglia=num_rand < c
    a=sum(idx_num_rand_min_soglia)

    si ottiene:
    num_rand =
    0.9961
    0.0782
    0.4427
    idx_num_rand_min_soglia =
    0
    1
    1
    a =
    2
    Hope this helps.
Devi accedere o registrarti per scrivere nel forum
1 risposte