MATLAB: déballer fonction

Je suis dans une discussion avec quelqu'un de Mathworks re: le unwrap fonction qui a un "bug" pour sauter tolérances autres que π, et aimerais obtenir des autres points de vue:

Description

Q = unwrap(P) corrige le radian angles de phase dans un vecteur de P par l'ajout de multiples de ±2π quand absolue sauts entre deux éléments de P est supérieure ou égale à la valeur par défaut de sauter la tolérance de π radians. Si P est une matrice, déballer fonctionne columnwise. Si P est un tableau multidimensionnel, déballer fonctionne sur la première nonsingleton dimension.

Q = unwrap(P,tol)utilise un saut de tolérance tol au lieu de la valeur par défaut, π.

Il y a deux interprétations possibles de la documentation:

  1. Q = unwrap(P,tol) corrige le radian angles de phase dans un vecteur de P par l'ajout de multiples de ±2π quand absolue sauts entre deux éléments de P est supérieure ou égale à tol radians. Si P est une matrice, déballer fonctionne columnwise. Si P est un tableau multidimensionnel, déballer fonctionne sur la première nonsingleton dimension.

    Exemple:

    >> x = mod(0:20:200,100); unwrap(x, 50)
    ans =
        0 20.0000 40.0000 60.0000 80.0000 81.6814 101.6814 121.6814 141.6814 161.6814 163.3628
  2. Q = unwrap(P,tol) corrige les éléments dans un vecteur de P par l'ajout de multiples de ±2*tol quand absolue sauts entre deux éléments de P est supérieure ou égale à tol. Si P est une matrice, déballer fonctionne columnwise. Si P est un tableau multidimensionnel, déballer fonctionne sur la première nonsingleton dimension.

    Exemple:

    >> x = mod(0:20:200,100); unwrap(x, 50)  
    ans =  
        0    20    40    60    80   100   120   140   160   180   200

Le comportement réel de unwrap() dans MATLAB (au moins jusqu'à R2010a) est #1. Mon interprétation de unwrap() est que c'est censé être le numéro 2, et donc il y a un bug dans le comportement. Si unwrap()le comportement correspondait #2, puis enlevez pourrait être utilisé comme un inverse pour la mod pour variant lentement entrées, c'est à dire unwrap(mod(x,T),T/2) = x pour les vecteurs x, où les éléments successifs varient de moins de tol=T/2.

Noter que cette 2ème interprétation est plus général que les angles, et peut déballer quoi que ce soit avec un wraparound période T. (que ce soit un défaut de T=2π pour radians, 360 degrés, 256 pour les 8-bits, 65536 pour les 16-bits des nombres, etc.)

Donc ma question est:

Sont là utilisations possibles pour le problème n ° 1? Une interprétation qui fait plus de sens?

OriginalL'auteur Jason S | 2010-07-07