Comme je l'ai dit dans mon commentaire, vous essayez de lire plus probablement dans un fichier audio à canaux multiples, auquel cas wavread
pourrait plus revenir probablement un tableau NxM
, où N
est le nombre d'échantillons et M
est le Nombre de canaux. Pourriez-vous poster la sortie de size(x)
, où x
est la sortie de wavread
?
Selon ce que vous voulez faire, vous pouvez soit en moyenne à travers les canaux pour obtenir un seul vecteur audio (comme un mono) comme xAvg=mean(x,2);
, ou vous pouvez choisir un canal spécifique pour travailler avec comme xChannelK=x(:,k);
, où 1<=k<=M
est le canal choisi.
En réponse à votre commentaire ci-dessus sur zéro padding, rappelez-vous que dans une opération de convolution entre un point n
et un signal de point m
, vous vous retrouvez avec une sortie de points m+n-1
. Dites que vous voulez convoluer A=[a1,a2,a3]
et B=[b1,b2,b3]
. Vous devez d'abord retourner l'un des vecteurs et le faire glisser à travers l'autre, tout en multipliant les points et en ajoutant le résultat à chaque étape.
Toutefois, lorsque vous retournez autour, le second vecteur dépasse dans l'espace de séquence en des points où l'autre fonction est non définie (et vice versa). Vous devez donc les remplir de zéros jusqu'à ce qu'ils soient tous deux de la même longueur.
Ceci est mieux illustré par un exemple. Le premier point de la sortie est
0 0 a1 a2 a3
b3 b2 b1 0 0
--------------------
0 + 0 + a1b1 + 0 + 0
--------------------
= a1b1
Ici, nous avons rembourré A
et B
avec des zéros aux endroits où l'autre n'est pas défini. Le deuxième point de la sortie est
0 a1 a2 a3 0
b3 b2 b1 0 0
-----------------------
0 + a1b2 + a2b1 + 0 + 0
-----------------------
= a1b2+a2b1
et ainsi de suite.Vous devriez passer par le wiki article on convolution pour plus d'informations. Cependant, vous n'avez pas besoin de le faire à la main. Le conv
de MATLAB le fera automatiquement pour vous. Donc, tout ce que vous devez faire est de mettre vos vecteurs en ordre et vous êtes prêt à partir.
vous devez fournir plus d'informations sur ce que vous essayez de faire. Il est tout à fait possible que le deuxième signal avec lequel vous convoluez n'est pas un vecteur. Ou vous pourriez lire dans les données multi-canal. – abcd