我需要在Matlab中以1.5 KHz的频率产生音调,其峰值幅度为30 mPa,持续时间为25 ms,在开始和偏移时分别产生1 ms的上升和下降。
到目前为止,我的语音(P)带有代码:
fs = 100000;
CF = 1.5*10^3;
amp = 30*10^-3;
duration=25*10^-3;
values = 0:1/fs:duration;
tone=[amp*sin(2*pi*CF*values)]';
这似乎是一件容易的事,但我无法弄清楚。有人可以帮我吗?
答案 0 :(得分:0)
您可以先生成斜坡包络,然后将其应用于tone
。 (使用逐元素乘法.*
)。
尝试以下方法:
% generate ramps
% duration of 1ms with fs=100000 is 100 samples:
ramp_up = [1:100]/100
ramp_down = 1 - ramp_up
% apply to tone
tone[1:100] = tone[1:100] .* ramp_up
tone[end-100+1:end] = tone[end-100+1:end] .* ramp_down