我正在尝试使用“非周期性”信号创建一个无缝循环,使用插值来平滑开始和结束,但是当它循环并且我听它时,我仍然会在开始时点击一下。插值可以做到这一点吗?
请注意,通过这种方式完成等式是为了创建一个“非周期性”信号来测试信号何时不在零交叉处开始和结束。
我大胆地放大并播放循环。我已经包含了图像以及 matlab/octave 代码。



% combines sig to create seamless loop
clear all,clc,tic;
fs=44100;
dirpathtmp=strcat('/tmp/'); %/home/rat/Documents/octave/eq_research/main/transform/voice
fn=strcat('atest1',sprintf('%02d',fs),'.wav');
t1=linspace(0,2*pi,fs); %need to round off no decimals
t2=linspace(0,2*pi,fs); %need to round off no decimals
t3=linspace(0,2*pi,fs); %need to round off no decimals
%Create signal in different arrays
y1=sin(7*t1);
y2=sin(12*t2);
y3=cos(2.2*t3);
yt=y1+y2+y3;
ytnorm=(yt/max(abs(yt))*.8); %normalize signal
%change end points to stddev number
ytnorm_std=std(ytnorm);
%for loop to replace points to create seamless loop
ytnorm(1)=0; %set first point to 0
ytnorm(fs)=0; %set last point to zero
for kk=2:1:15;
kk
ytnorm(kk)=interp1(t1,ytnorm,kk,'spline');
ytnorm((fs+1)-kk)=interp1(t1,ytnorm,((fs+1)-kk),'spline');
end;
wavwrite([ytnorm'] ,fs,16,strcat(dirpathtmp,fn));
plot(ytnorm)
fprintf('\nfinally Done-elapsed time -%4.4fsec- or -%4.4fmins- or -%4.4fhours-\n',toc,toc/60,toc/3600);
