Mercurial > hg > gccphat-windowing
view Functions/createMat.m @ 0:ab043bd3b162 tip
First commit
author | Alice Clifford <alice.clifford@eecs.qmul.ac.uk> |
---|---|
date | Mon, 11 Jun 2012 17:42:13 +0100 |
parents | |
children |
line wrap: on
line source
function [matOut,numFrames]=createMat(x,frameSize,hopSize) % create a matrix of frames of input x % % Input: % - x: 1 or 2 column vector (audio data) % - frameSize: size of frames % - hopSize: number of samples overlap % % Output: % - matOut: matrix of frames, either (frameSize x numFrames) for 1 % channel or (framSize x 2 x numFrames) for stereo % - numFrames: number of frames in matOut % % Developer: - Alice Clifford (alice.clifford@eecs.qmul.ac.uk) sizeX=size(x); if sizeX(1)==1 || sizeX(1)==2 x=x'; %make columns end sizeX=size(x); if sizeX(2)==1 fileType='mono'; elseif sizeX(2)==2 fileType='stereo'; else error('Input is neither mono or stereo') end numFrames=(floor(length(x)/hopSize)); for n=1:numFrames xStart=(n-1)*(hopSize)+1; xEnd=(n-1)*(hopSize)+frameSize; %Break if frame index goes over length of x if(xEnd>length(x)) break end if strcmp(fileType,'stereo') xframe=x(xStart:xEnd,:); matOut(:,:,n)=xframe; elseif strcmp(fileType,'mono') xframe=x(xStart:xEnd); matOut(:,n)=xframe; else error('File type unknown') end end sMat=size(matOut); if strcmp(fileType,'stereo') numFrames=sMat(3); elseif strcmp(fileType,'mono') numFrames=sMat(2); end