MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   在MATLAB中创建淡入/淡出功能? (https://www.labfans.com/bbs/showthread.php?t=23797)

poster 2019-12-10 20:48

在MATLAB中创建淡入/淡出功能?
 
我正在寻找一个可以在五秒钟内在.wav文件上创建淡入/淡出功能的函数。

我在MATLAB论坛上找到了这段代码,但是尽管有正确的想法,但似乎实现起来还是有一点错误。它是用于300ms的.WAV文件以及10ms淡入/淡出的:

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个样本来了解他的尝试,但是我尝试进行修补和修改,但无法使其正常工作。

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



[B]回答:[/B]

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

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) 当然,您可以用诸如S形之类的东西代替linspace,并使用相同的想法进行淡出...

编辑:做淡出,尝试

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

[url=https://stackoverflow.com/questions/3511221]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 13:15

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.