annotate 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
rev   line source
alice@0 1 function [matOut,numFrames]=createMat(x,frameSize,hopSize)
alice@0 2
alice@0 3 % create a matrix of frames of input x
alice@0 4 %
alice@0 5 % Input:
alice@0 6 % - x: 1 or 2 column vector (audio data)
alice@0 7 % - frameSize: size of frames
alice@0 8 % - hopSize: number of samples overlap
alice@0 9 %
alice@0 10 % Output:
alice@0 11 % - matOut: matrix of frames, either (frameSize x numFrames) for 1
alice@0 12 % channel or (framSize x 2 x numFrames) for stereo
alice@0 13 % - numFrames: number of frames in matOut
alice@0 14 %
alice@0 15 % Developer: - Alice Clifford (alice.clifford@eecs.qmul.ac.uk)
alice@0 16
alice@0 17 sizeX=size(x);
alice@0 18
alice@0 19 if sizeX(1)==1 || sizeX(1)==2
alice@0 20 x=x'; %make columns
alice@0 21 end
alice@0 22
alice@0 23 sizeX=size(x);
alice@0 24
alice@0 25 if sizeX(2)==1
alice@0 26 fileType='mono';
alice@0 27 elseif sizeX(2)==2
alice@0 28 fileType='stereo';
alice@0 29 else
alice@0 30 error('Input is neither mono or stereo')
alice@0 31 end
alice@0 32
alice@0 33
alice@0 34 numFrames=(floor(length(x)/hopSize));
alice@0 35
alice@0 36 for n=1:numFrames
alice@0 37
alice@0 38 xStart=(n-1)*(hopSize)+1;
alice@0 39 xEnd=(n-1)*(hopSize)+frameSize;
alice@0 40
alice@0 41 %Break if frame index goes over length of x
alice@0 42 if(xEnd>length(x))
alice@0 43 break
alice@0 44 end
alice@0 45
alice@0 46
alice@0 47 if strcmp(fileType,'stereo')
alice@0 48 xframe=x(xStart:xEnd,:);
alice@0 49 matOut(:,:,n)=xframe;
alice@0 50
alice@0 51 elseif strcmp(fileType,'mono')
alice@0 52 xframe=x(xStart:xEnd);
alice@0 53 matOut(:,n)=xframe;
alice@0 54 else
alice@0 55 error('File type unknown')
alice@0 56 end
alice@0 57
alice@0 58 end
alice@0 59
alice@0 60 sMat=size(matOut);
alice@0 61
alice@0 62 if strcmp(fileType,'stereo')
alice@0 63
alice@0 64 numFrames=sMat(3);
alice@0 65
alice@0 66 elseif strcmp(fileType,'mono')
alice@0 67
alice@0 68 numFrames=sMat(2);
alice@0 69 end