안녕하세요%, 이 프로그램은 mywav.wav 파일을 읽고 스펙트럼과 파형을 표시합니다. mywav.wav 파일은 너무 길어서는 안 됩니다. 그렇지 않으면 작업 속도가 매우 느려집니다.
[y,Fs,bits]=wavread('mywav.wav'); % 읽기 신호, 샘플링 속도 및 샘플링 비트 수.
y=y(:,1);% 여기서는 귀하의 음성이 바이노럴이라고 가정합니다. 저는 분석을 위해 모노만 사용합니다. 다른 채널을 분석하려면 y=y(:,2 )
로 변경하세요.sigLength=길이(y);
Y = fft(y,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:절반길이)/sigLength;
Figure;plot(f,Pyy(1:halflength+1));xlabel('주파수(Hz)');
t=(0:sigLength-1)/Fs;
Figure;plot(t,y);xlabel('시간(들)');
예를 들어보고 직접 바꿔보세요
fs=1000;% 샘플링 주파수 설정
N=1024;% 데이터 길이 설정
i=0:N-1;
t=i/fs;
f=100;%는 정현파 신호 주파수를 설정합니다
%정현파 신호 생성
x=sin(2*pi*f*t);
서브플롯(231);
plot(t,x); %는 정현파 신호의 시간 영역 파형을 만듭니다
축([0,0.01,-1,1]);
xlabel('t');
ylabel('y');
title('정현파 신호 시간 영역 파형');
그리드;
%FFT 변환을 수행하고 스펙트로그램을 만듭니다
y=fft(x,N); % fft 변환 수행
mag=abs(y);% 진폭
f=(0:N-1)*fs/N; % 가로 좌표 표현은 f=(0:M-1)*Fs/M;
서브플롯(232);
plot(f,mag);% 스펙트로그램 만들기
축([0,100,0,80]);
xlabel('주파수(Hz)');
ylabel('크기');
title('정현파 신호 진폭 스펙트럼 다이어그램');
그리드;
% 제곱평균제곱근 스펙트럼
sq=abs(y);
그림(1);
서브플롯(233);
플롯(f,sq);
xlabel('주파수(Hz)');
ylabel('제곱 평균 제곱 스펙트럼')
title('정현파 신호의 평균 제곱 스펙트럼');
그리드;
% 전력 스펙트럼
전력=제곱^2;
그림(1);
서브플롯(234);
plot(f,power);
xlabel('주파수(Hz)');
ylabel('파워 스펙트럼');
title('정현파 신호 전력 스펙트럼');
그리드;
% 로그 스펙트럼
ln=log(제곱);
그림(1);
서브플롯(235);
플롯(f,ln);
xlabel('주파수(Hz)');
ylabel('로그 스펙트럼');
title('정현파 신호의 로그 스펙트럼');
그리드;
% IFFT를 사용하여 원래 신호를 복원
xifft=ifft(y);
magx=실제(xifft);
ti=[0:길이(xifft)-1]/fs;
서브플롯(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('IFFT로 변환된 정현파 신호 파형')
그리드;
위 내용은 matlab 오디오 처리: WAV 형식 스펙트로그램 및 시간 영역 파형을 생성하는 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!