原来有个博主写的python代码,我这里改成matlab了
clc;clear all;
samplingrate = 44100;
sweeptime = 1;
f0 = 20;
f1 = 200;
peak = 1;
data=sinesweep(f0, f1, sweeptime, samplingrate, peak);
figure(1)
plot(data)
函数
function data=sinesweep(f0, f1, sweeptime, samplingrate, peak)
% 扫频信号:起始频率f0、截止频率f1、采样率和幅度
k = exp(log(f1 / f0) / sweeptime); % 增长系数k的计算公式
data_len = sweeptime * samplingrate; % 数据长度
data = zeros(data_len,1);% 创建一个长度为数据长度的全为0的int类型数组,用以存储每个采样点的幅度值
dt = 1.0 / samplingrate; % 两个采样点的相隔时间
t = 0; % 起始时间
p = 2 * pi * f0 / log(k);
for i=1:data_len
data(i) = peak * sin(p * (k^t - 1));% 将每个采样点的幅度值存入数组
t = t+dt; % 每次加一个时间间隔
end
代码链接:https://download.csdn.net/download/qq_45047246/86245523