Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB中创建淡入/淡出函数?_Matlab_Audio_Wav_Fadein_Fadeout - Fatal编程技术网

在MATLAB中创建淡入/淡出函数?

在MATLAB中创建淡入/淡出函数?,matlab,audio,wav,fadein,fadeout,Matlab,Audio,Wav,Fadein,Fadeout,我希望创建一个函数,可以在.wav文件上创建一个淡入/淡出函数,时间为5秒 我在MATLAB论坛上找到了这段代码,但它的实现似乎有点错误,尽管有正确的想法。它适用于300毫秒的.WAV文件,具有10毫秒的淡入/淡出: tenmssamples = length(soundfile)*10/300; fade1 = linspace(0,1,tenmssamples); fadedsound = soundfile .* ... [fade1, ones(1,length(soundfile)

我希望创建一个函数,可以在.wav文件上创建一个淡入/淡出函数,时间为5秒

我在MATLAB论坛上找到了这段代码,但它的实现似乎有点错误,尽管有正确的想法。它适用于300毫秒的.WAV文件,具有10毫秒的淡入/淡出:

tenmssamples = length(soundfile)*10/300;
fade1 = linspace(0,1,tenmssamples);
fadedsound = soundfile .* ...
  [fade1, ones(1,length(soundfile)-2*tenmssamples), fliplr(fade1)];


tenmssamples = length(soundfile)*10/300;
fade2 = sin(linspace(0,2*pi/4,tenmssamples));
fadedsound2 = soundfile .* ...
  [fade2, ones(1,length(soundfile)-2*tenmssamples), fliplr(fade2)];
我可以通过尝试使用linspace缩放递增函数读取的波形的前10个样本来了解他试图做什么,但我尝试了修补和修改它,但我无法让它工作


有人有什么建议吗?谢谢。

我不确定您遇到的问题是什么,但我会这样做:

Fs = 1000; % sampling rate of signal
FADE_LEN = 5; % 5 second fade

sig = randn(15.*Fs,1); % generate 15 s signal

fade_samples = round(FADE_LEN.*Fs); % figure out how many samples fade is over
fade_scale = linspace(0,1,fade_samples)'; % create fade

sig_faded = sig;
sig_faded(1:fade_samples) = sig(1:fade_samples).*fade_scale; % apply fade

subplot(211)
plot(sig)
subplot(212)
plot(sig_faded)
当然,你可以用其他东西来代替linspace,比如sigmoid,然后用同样的想法来做一个淡出

编辑:要进行淡出,请尝试

sig_faded(end-fade_samples+1:end) = sig(end-fade_samples+1:end).*fade_scale(end:-1:1);

我试着用wavread/wavrwite实现这个函数,但它说这个等式是不平衡的。我现在没有时间再看一看MATLAB,但我很感谢你的回复,我会稍后再查看!谢谢,我已经设法让淡入淡出工作的前五秒,但我不知道如何选择最后5秒的剪辑。我假设它会像fade_samples:end一样,但我不确定它是否正确?添加了淡出建议;相关的MATLAB教程和帮助在这里:供参考。谢谢,太棒了。我一直在研究阵列,但我不认为我会很快找到答案。不过我又读了一遍教程。谢谢