2016-04-30 48 views
5

Fondamentalmente volevo chiederti due cose:zeri negative di Matlab

  1. Perché accade questo? (zero negativo in Matlab)
  2. Quando succede?

Mi è venuta in mente this. Octave ha alcune somiglianze con Matlab, quindi l'utilità di questa funzione è chiara, ma una delle cose che hanno detto è che non appare nell'output predefinito. e l'ho appena affrontato proprio ora. Quindi, forse una nuova visione di questo?

Per la seconda domanda, nella domanda a cui ho fatto riferimento, hanno appena detto che potrebbe accadere in alcuni calcoli, e nel calcolo seguente che ho appena fatto, non sembra davvero necessario usare (o ottenere) quello zero negativo.

Il codice dove ho incontrato questo è:

xcorr([1 0 1 1], [0 1 1 0 0]) 

dove è uscita è:

-0.0000 -0.0000 1.0000 1.0000 1.0000 2.0000 1.0000 0.0000 0.0000 

Il xcorr è in realtà una funzione corelation croce, che fa solo alcune operazioni semplici come somma e moltiplicazioni , dove è possibile trovare i dettagli della funzione esatta here. Comunque, nulla come "tagli complessi ramo e trasformazioni del piano complesso"

Grazie

risposta

3

Questi valori non rappresentano zeri. Invece, sono valori negativi che sono molto vicini allo zero. Il motivo per ottenere questi valori e non semplicemente zeri è dovuto alle approssimazioni che vengono eseguite nell'implementazione della funzione. Secondo la documentazione di Matlab: "xcorr estimates the cross-correlation sequence of a random process".

In altre parole, i valori visualizzati sullo schermo sono solo approssimazioni per valori negativi.

Per verificare ciò, è possibile modificare il formato di visualizzazione di Matlab.

codice:

format shortE; 
xcorr([1 0 1 1], [0 1 1 0 0]) 

Risultato:

ans = 

    Columns 1 through 5 

-6.2450e-017 -5.5511e-017 1.0000e+000 1.0000e+000 1.0000e+000 

    Columns 6 through 9 

    2.0000e+000 1.0000e+000 1.1102e-016 1.1796e-016 

Come si può vedere, i valori in coordinate 1,2,8 e 9 sono in realtà negativi.

+0

Grazie per la risposta. È come hai detto, non zero, ma un numero molto piccolo. Ma ancora, perché succede? Come la documentazione di Matlab (e, naturalmente, la formula di questa funzione), è solo una somma di moltiplicazioni. – lazary

+1

Secondo la formula siete corretti. Tuttavia, l'implementazione di MATLAB per xcorr è solo un'approssimazione per questa formula. Come scritto nella documentazione ufficiale di Matlab: "xcorr ** stima ** la sequenza di correlazione incrociata". Pertanto, l'output finale non è preciso al 100%. – drorco