Popełniłem program obrabiający podany sygnał. Do tego co w kodzie, jest jeszcze segmentacja, transformacja itp. ale to wszystko mi działa. Nie działa natomiast nakładanie się 3 głosów i echo. Kompiluje się, ale nie wyświetla wykresów. Pomoże ktoś? Dzięki.
bits=50;
%%% czytanie pliku
[FN,PN]=uigetfile('*.wav','Wybierz plik do obróbki');
if any(PN)==1
[x,fp,bits]=wavread(char([PN,FN]));
end
%%% odtworzenie pliku
sound(x,44100) %odtworzeie pliku bez obróbki
%%% nakladanie sie 3 glosow
clear
f=700;
fp=44100;
dt=1/fp;
t=0:dt:3;
[FN,PN]=uigetfile('*.wav')
if any(PN)==1 %warunek poprawnosci pliku, jeśli jest spełniony, plik nazwany jest g
[g,fp,bits]=wavread(char([PN,FN]));
end
[FN,PN]=uigetfile('*.wav')
if any(PN)==1
[h,fp,bits]=wavread(char([PN,FN])); %warunek poprawnosci pliku, jeśli jest spełniony, plik nazwany jest h
end
[FN,PN]=uigetfile('*.wav')
if any(PN)==1
[j,fp,bits]=wavread(char([PN,FN])); %warunek poprawnosci pliku, jeśli jest spełniony, plik nazwany jest j
end
ghj=g+h+j; % dodawanie macierzowe trzech dzwieków Warunek konieczny- macierze muszą mieć ten sam wymiar
sound(ghj,44100)
figure
plot(ghj) % rysowanie wykresu z nałożonymi dźwiękami
title('chor');
%%% tworzenie echa
clear
f=700;
fp=44100;
dt=1/fp;
t=0:dt:3;
[FN,PN]=uigetfile('*.wav')
if any(PN)==1
[y,fp,bits]=wavread(char([PN,FN]));
end
ya=y(:,1);
ya=ya';
z(5000)=0;
y1=[z ya(1:length(y)-5000)];
y2=[z z y1(1:length(y1)-10000)];
yc=ya/3+y1/3+y2/3;
sound(yc,44100,16)
figure
plot(yc)
title('echo');