Mercurial > hg > gccphat-windowing
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 |