alice@0: function [matOut,numFrames]=createMat(x,frameSize,hopSize) alice@0: alice@0: % create a matrix of frames of input x alice@0: % alice@0: % Input: alice@0: % - x: 1 or 2 column vector (audio data) alice@0: % - frameSize: size of frames alice@0: % - hopSize: number of samples overlap alice@0: % alice@0: % Output: alice@0: % - matOut: matrix of frames, either (frameSize x numFrames) for 1 alice@0: % channel or (framSize x 2 x numFrames) for stereo alice@0: % - numFrames: number of frames in matOut alice@0: % alice@0: % Developer: - Alice Clifford (alice.clifford@eecs.qmul.ac.uk) alice@0: alice@0: sizeX=size(x); alice@0: alice@0: if sizeX(1)==1 || sizeX(1)==2 alice@0: x=x'; %make columns alice@0: end alice@0: alice@0: sizeX=size(x); alice@0: alice@0: if sizeX(2)==1 alice@0: fileType='mono'; alice@0: elseif sizeX(2)==2 alice@0: fileType='stereo'; alice@0: else alice@0: error('Input is neither mono or stereo') alice@0: end alice@0: alice@0: alice@0: numFrames=(floor(length(x)/hopSize)); alice@0: alice@0: for n=1:numFrames alice@0: alice@0: xStart=(n-1)*(hopSize)+1; alice@0: xEnd=(n-1)*(hopSize)+frameSize; alice@0: alice@0: %Break if frame index goes over length of x alice@0: if(xEnd>length(x)) alice@0: break alice@0: end alice@0: alice@0: alice@0: if strcmp(fileType,'stereo') alice@0: xframe=x(xStart:xEnd,:); alice@0: matOut(:,:,n)=xframe; alice@0: alice@0: elseif strcmp(fileType,'mono') alice@0: xframe=x(xStart:xEnd); alice@0: matOut(:,n)=xframe; alice@0: else alice@0: error('File type unknown') alice@0: end alice@0: alice@0: end alice@0: alice@0: sMat=size(matOut); alice@0: alice@0: if strcmp(fileType,'stereo') alice@0: alice@0: numFrames=sMat(3); alice@0: alice@0: elseif strcmp(fileType,'mono') alice@0: alice@0: numFrames=sMat(2); alice@0: end