How to get rid of error: Error using horzcat. Dimensions of array being concatenated are not consistent.
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentario
Geoff Hayes
el 27 de Abr. de 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?
Respuestas (1)
Srivardhan Gadila
el 30 de Abr. de 2020
While concatenating arrays, the lengths of the dimensions must match except for the operating dimension.
0 comentarios
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!