Maison  >  Article  >  tutoriels informatiques  >  traitement audio Matlab : programme pour générer des spectrogrammes au format WAV et des formes d'onde dans le domaine temporel

traitement audio Matlab : programme pour générer des spectrogrammes au format WAV et des formes d'onde dans le domaine temporel

王林
王林avant
2024-01-22 19:12:061452parcourir

traitement audio Matlab : programme pour générer des spectrogrammes au format WAV et des formes donde dans le domaine temporel

Programme Matlab pour créer des spectrogrammes de fichiers audio au format WAV et des graphiques de forme d'onde dans le domaine temporel

Bonjour%, ce programme lit le fichier mywav.wav puis affiche le spectre et la forme d'onde. Notez que le fichier mywav.wav ne doit pas être trop long, sinon l'opération sera très lente.

[y,Fs,bits]=wavread('mywav.wav'); % du signal lu, taux d'échantillonnage et nombre de bits d'échantillonnage.

y=y(:,1);%Je suppose ici que votre voix est binaurale. Je n'utilise que le mono pour l'analyse. Si vous souhaitez analyser un autre canal, veuillez le changer en y=y(:,2 )

.

sigLength=longueur(y);

Y = fft(y,sigLength);

Pyy = Y.* conj(Y) / sigLength;

halflength=floor(sigLength/2);

f=Fs*(0:demi-longueur)/sigLength;

figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

t=(0:sigLength-1)/Fs;

figure;plot(t,y);xlabel('Time(s)');

Analyse spectrale de signaux continus basée sur Matlab

Donnez-moi un exemple, changez-le vous-même

fs=1000;% définit la fréquence d'échantillonnage

N=1024;% de la longueur des données définie

i=0:N-1;

t=i/fs;

f=100;% définit la fréquence du signal sinusoïdal

%Générer un signal sinusoïdal

x=sin(2*pi*f*t);

intrigue secondaire(231);

plot(t,x); % crée la forme d'onde dans le domaine temporel du signal sinusoïdal

axe([0,0.01,-1,1]);

xlabel('t');

ylabel('y');

title('Forme d'onde du domaine temporel du signal sinusoïdal');

grille;

%Effectuer une transformation FFT et créer un spectrogramme

y=fft(x,N); % effectue la transformation fft

mag=abs(y);% amplitude

f=(0:N-1)*fs/N; L'expression du % de fréquence en abscisse est f=(0:M-1)*Fs/M;

intrigue secondaire(232);

plot(f,mag);% fait un spectrogramme

axe([0,100,0,80]);

xlabel('Fréquence (Hz)');

ylabel('magnitude');

title('Diagramme du spectre d'amplitude du signal sinusoïdal');

grille;

% Spectre quadratique moyen

sq=abdos(y);

figure(1);

intrigue secondaire(233);

intrigue(f,sq);

xlabel('Fréquence (Hz)');

ylabel('spectre quadratique moyen');

title('Spectre quadratique moyen du signal sinusoïdal');

grille;

% spectre de puissance

puissance=carré^2;

figure(1);

intrigue secondaire(234);

intrigue(f,puissance);

xlabel('Fréquence (Hz)');

ylabel('spectre de puissance');

title('Spectre de puissance du signal sinusoïdal');

grille;

% Spectre logarithmique

ln=log(sq);

figure(1);

intrigue secondaire(235);

intrigue(f,ln);

xlabel('Fréquence (Hz)');

ylabel('log spectre');

title('Spectre logarithmique du signal sinusoïdal');

grille;

% Utilisez IFFT pour restaurer le signal d'origine

xifft=ifft(y);

magx=real(xifft);

ti=[0:length(xifft)-1]/fs;

intrigue secondaire(236);

intrigue(ti,magx);

xlabel('t');

ylabel('y');

title('Forme d'onde du signal sinusoïdal convertie par IFFT');

grille;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer