gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:48 26 4
gpt4 key购买 nike

我希望创建一个函数,该函数可以在 .wav 文件上创建五秒内的淡入/淡出功能。

我在 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)

当然你可以用sigmoid之类的东西代替linspace,然后用同样的想法做一个淡出...

编辑:做淡出,尝试

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

关于matlab - 在 MATLAB 中创建淡入/淡出函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3511221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com