При большом сдвиге искажается тембр звука.
Файл sdv_tona.m
clear all;
close all;
[s,Fs] = wavread('example.wav') ;
% signal: fdyscr=16 KHz, 16 bit or any
% acoustic preprocessing of signal
d=length(s);
sp = fft(s);
df=length(sp);
df2=df/2;
for j=df2: -1: 501
sp(j)=sp(j-250);
sp(j-250)=0;
end; % sdvig levoi poloviny vpravo
for j=df2:df-250
sp(j)=sp(j+250);
sp(j+250)=0;
end; % sdvig pravoi poloviny vlevo
Fs1 = (1:length(s))*(Fs/2)/length(s); %%частотная сетка wav
F = (1:length(sp)); %*(Fs/2)/length(sp); %%частотная сетка fft
%save 'fft.txt.' sp -ascii;
%fb = 700; %% по спектру определили, где кончается полезные частотные составляющие
%fbs = round(fb*length(sp)/(Fs/2)); %% пересчитали частоту в отсчеты спектра
%sp(fbs:size(sp,1)-fbs,
=0; %%обнулили остальные частоты
%sp(1:fbs,
=0; %%обнулили остальные частоты
sn = ifft(sp);
wavwrite(sn,Fs,'______Out.wav');
% end of signal acoustic preprocessing
figure(1)
plot(Fs1,s);
figure(2)
plot(F,abs(sp));
figure(3)
plot(sn);
subplot(3,1,1); plot(s);title(' all values ');
subplot(3,1,2); plot(F,abs(sp));title(' fft ');
subplot(3,1,3); plot(Fs1,sn);title(' out wav ');