How to get rid of error: Error using horzcat. Dimensions of array being concatenated are not consistent.
18 views (last 30 days)
Show older comments
I have been working on speaker identification using MFCC and Pitch and after the process of feature extraction of files loaded from database and concatenating them into single array I recieve the error.
My code:
ads= audioDatastore(datadir,'FileExtensions','.wav','LabelSource','foldernames')
fs = dsInfo.SampleRate;
windowLength = round(0.03*fs);
overlapLength = round(0.025*fs);
features = [];
labels = [];
while hasdata(ads)
[audioIn,dsInfo] = read(ads);
melC = mfcc(audioIn,fs,'WindowLength',windowLength,'OverlapLength',overlapLength);
f0 = pitch(audioIn,fs,'WindowLength',windowLength,'OverlapLength',overlapLength);
feat =[melC,f0]; %Error on this line
voicedSpeech = isVoicedSpeech(audioIn,fs,windowLength,overlapLength);
feat(~voicedSpeech,:) = [];
label = repelem(dsInfo.Label,size(feat,1));
features = [features;feat];
labels = [labels,label];
end
M = mean(features,1);
S = std(features,[],1);
features = (features-M)./S;
function voicedSpeech = isVoicedSpeech(x,fs,windowLength,overlapLength)
pwrThreshold = -40;
[segments,~] = buffer(x,windowLength,overlapLength,'nodelay');
pwr = pow2db(var(segments));
isSpeech = (pwr > pwrThreshold);
zcrThreshold = 1000;
zeroLoc = (x==0);
crossedZero = logical([0;diff(sign(x))]);
crossedZero(zeroLoc) = false;
[crossedZeroBuffered,~] = buffer(crossedZero,windowLength,overlapLength,'nodelay');
zcr = (sum(crossedZeroBuffered,1)*fs)/(2*windowLength);
isVoiced = (zcr < zcrThreshold);
voicedSpeech = isSpeech & isVoiced;
end
In workspace window
Value for f0 = 442x2 double
Value for melC= 442x14x2 double
1 Comment
Geoff Hayes
on 27 Apr 2020
Smarth - the code is trying to concatenate a 442x2 array with a 442x14x2 array and so the error makes sense. How are you trying to combine the two? What should the dimensions of the concatenated result be?
Answers (1)
Srivardhan Gadila
on 30 Apr 2020
While concatenating arrays, the lengths of the dimensions must match except for the operating dimension.
0 Comments
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!