⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spectrogram.m

📁 语音信号分析软件
💻 M
字号:
function [array,raw] = spectrogram(wave,segsize,nlap,ntrans);%function array = spectrogram(wave,segsize,nlap,ntrans);% defaults spectrogram(wave,128,8,4)% nlap is number of hamming windows overlapping a point;% ntrans is factor by which transform is bigger than segment;% returns a spectrogram 'array' with fourth root of power,% filter smoothed and formatted for display.% Added option to return raw spectrogram.... Malcolm 5/26/95% Added code so that input could be any direction ... Malcolm 5/26/95% (c) 1998 Interval Research Corporation  if nargin < 4; ntrans=4; endif nargin < 3; nlap=8; endif nargin < 2; segsize=128; end[r c] = size(wave);if (r < c)	wave = filter([1 -0.95],[1],wave');else	wave = filter([1 -0.95],[1],wave);ends = length(wave);nsegs = floor(s/(segsize/nlap))-nlap+1;array = zeros(ntrans/2*segsize,nsegs);window = 0.54-0.46*cos(2*pi/(segsize+1)*(1:segsize)');for i = 1:nsegs seg = zeros(ntrans*segsize,1); % leave half full of zeroes seg(1:segsize) = ...	 window.*wave(((i-1)*segsize/nlap+1):((i+nlap-1)*segsize/nlap)); seg = abs(fft(seg));						% reverse for image display array(:,i) = seg(((ntrans/2*segsize)+1):(ntrans*segsize));endif nargout > 1	raw = array;endarray = array .* array;			% back into power domain for smoothingfor i=1:nsegs    % smooth the spectral slices array(:,i) = filter([.2 1 .2],[1],array(:,i));endfor i=1:ntrans/2*segsize    % smooth the channels array(i,:) = filter([.2 1 .2],[1],array(i,:));end% compress with square root of amplitude (fourth root of power)off = 0.0001*max(max(array));      	% low end stabilization offset,array = (off+array).^0.25-off^0.25; 	% better than a threshold hack!array = 255/max(max(array))*array;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -