Hi, I'm wanting to use correlation to see how similar an original sound and one I synthesized from it are. I was advised to use the resample function however, due to lack of knowledge in MATLAB I'm looking for a little help to gain my metric as I'm just not understanding things. I have attached the audio files if anyone could please help me out a little? clear, clc, close all % get a section of the sound file [x, fs] = audioread('Machine_Gun.wav'); % load an audio file x = x(:, 1); % get the first channel N = length(x); % signal length t = (0:N-1)/fs; % time vector [y, fs] = audioread('Dry_Synthesized_Machine_Gun.wav'); % load an audio file y = y(:, 1); % get the first channel n = length(y); % signal length T = (0:n-1)/fs; data = [x y]; correlation = corrcoef(data); This was my failed attempt and i got the below error message: Error using horzcat Dimensions of arrays being concatenated are not consistent. Error in test (line 12) data = [x y];
Kshitij Singh answered .
2025-11-20
Error using horzcat Dimensions of arrays being concatenated are not consistent. data = [x y];
% get a section of the sound file
[x, fsx] = audioread('Machine_Gun.wav'); % load an audio file
[y, fsy] = audioread('Dry_Synthesized_Machine_Gun.wav'); % load an audio file
x = x(:, 1); % get the first channel
y = y(:, 1); % get the first channel
nx = length(x); % signal length
ny = length(y); % signal length
yPad = y;
yCrop = y;
xPad = x;
xCrop = x;
if nx > ny
yPad(nx) = 0;
xCrop = xCrop(1:ny);
elseif nx < ny
xPad(ny) = 0;
yCrop = yCrop(1:nx);
end
c1 = corrcoef(xPad, yPad);
c2 = corrcoef(xCrop, yCrop);