clear
clc
close all
% load an audio file
[x, fs] = audioread('track.wav'); % load an audio file
x = x(:, 1); % get the first channel
output_folder = './figures'; % 指定输出频谱文件夹路径(此处默认为本代码文件夹)
%% 滑动窗口划分样本
window_length = 106150; % 窗口长度
step_size = 106150; % 步长
t = (0:window_length-1)/fs;
f=(fs/2)/(window_length/2):(fs/2)/(window_length/2):(fs/2);
num_samples = floor((length(x) - window_length) / step_size) + 1; % 样本数量
% 初始化样本矩阵
samples = zeros(window_length, num_samples);
% 滑动窗口划分数据样本
for i = 1:num_samples
start_index = (i - 1) * step_size + 1; % 窗口起始索引
end_index = start_index + window_length - 1; % 窗口结束索引
% 判断是否滑动至最后一个窗口
if end_index <= length(x)
samples(:, i) = x(start_index:end_index);
else
% 忽略最后一个窗口
break;
end
end
% 显示样本矩阵的大小
fprintf('样本矩阵的大小:[%d, %d]\n', size(samples));
%% 对划分的每个样本进行频谱图计算,并将图像保存在指定文件夹下
[m,n] = size(samples);
% define analysis parameters
wlen = 1024; % window length (recomended to be power of 2)
hop = wlen/4; % hop size (recomended to be power of 2)
nfft = 4096; % number of fft points (recomended to be power of 2)
% perform STFT
win = blackman(wlen, 'periodic');
for g = 1:n
%生成RP
% 转换为相空间,第一个元素为高度,第二个元素为下一个位置的高度。
X = samples(:,g);
[S, f, t] = stft(X, win, hop, nfft, fs);
% calculate the coherent amplification of the window
C = sum(win)/wlen;
% take the amplitude of fft(x) and scale it, so not to be a
% function of the length of the window and its coherent amplification
S = abs(S)/wlen/C;
% correction of the DC & Nyquist component
if rem(nfft, 2) % odd nfft excludes Nyquist point
S(2:end, :) = S(2:end, :).*2;
else % even nfft includes Nyquist point
S(2:end-1, :) = S(2:end-1, :).*2;
end
% convert amplitude spectrum to dB (min = -120 dB)
S = 20*log10(S + 1e-6);
figure;
imagesc(t,f,abs(S))
set(gca,'ydir','normal');
colorbar;
title('STFT');
% 构建输出文件名
file_name = sprintf('sample_%d.png', g);
% 拼接输出文件路径
output_path = fullfile(output_folder, file_name);
% 保存图像
saveas(gcf, output_path);
% 关闭当前图像窗口
close(gcf);
end
前程算法屋
- 粉丝: 5922
- 资源: 835
最新资源
- 这是一个对于开源的四轴无人机开源飞控系统修改学习的仓库.zip
- 用于FPV微型无人机比赛和自由式的一流拉丝飞行控制器 http_alienwhoop.us_.zip
- 这是一个通过pixhawk飞控来学习多旋翼无人机的学生的仓库.zip
- 这是一个简单的无人机轨迹追踪demo,也是一份offboard实飞控制踩坑经验总结.zip
- 这是一个无人机四轴项项目,使用stm32 作为主控,使用固件库编程,移植ucos ii 操作系统,最终实现飞机可以起飞的完整项目.zip
- 这是一个与电院天线所合作的项目,由501实验室的研发学生Phillweston与Devotlig负责.zip
- 整合uav模型与gazebo环境,开放测试demo,可使用键盘控制无人机进行遥控飞行与飞行状态数据检.zip
- 1.科大讯飞智慧课堂平板之前大多是联想系或者荣耀系低端机,此类平板基本都可以解除bl锁,进行刷机操作.zip
- 悬浮颗粒两相流模拟 本案例基于COMSOL软件模拟了不同密度大小的悬浮颗粒在混合溶液中的流动沉积情况,模拟结果如图所示1.密度较大颗粒的沉积情况2.密度较小颗粒悬浮混合情况 3000j
- 压盖检测机sw20可编辑全套技术资料100%好用.zip
- 机器人开发代码实战项目ros开发,可以快速上手 有安装运行教程
- 44、COMSOL模拟二维裂隙流压裂水平井裂缝性油藏离散裂缝网络模型COMSOL数值模拟案例
- 硬盘上料机sw16全套技术资料100%好用.zip
- VT笔记,VT仿真笔记,VT教程,原版仿真实战笔记升级版,加入多轴及车铣复合仿真笔记啦加量不加价(vericut)原版仿真设置实战经验笔记 +cimco edit仿真笔记分享:全网唯一超详解析,让你快
- 2006-2020年各省常住人口数数据
- 光伏储能交直流微电网Matlab simulink仿真~由光伏、蓄电池及负载组成的独立直流微电网,提出电压和电流分段式协同控制策略 该控制策略将能量管理划分为 4 种工作模式,采用最大功率点跟踪控制
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈