Amplification correlation for signal processing
5 views (last 30 days)
Show older comments
Jonathan La Combe
on 19 Nov 2018
Commented: Hamza Ashraf
on 21 Aug 2020
I'm trying to write a program that takes two audio files and matches one to the other as best it can before subtracting it. To do this I've implemented a cross correlation function to handel time shift, but I am unsure how to do something similar to that for amplification. So if I were to give the program two audio files, one of which is just a quieter version of the other one the program should amplify the quieter one to match the other, then subtract and end up with silence. What functions could I used to acheive what I am looking for?
0 Comments
Accepted Answer
Dimitris Kalogiros
on 20 Nov 2018
Edited: Dimitris Kalogiros
on 20 Nov 2018
Suppose that you have two (discrete time) signals x[n] and y[n] where .
You can make them "unity energy" by using the following formulas:
Now these two signals x1[n] and y1[n] have equal power (=1) and you can correlate them as you've described.
Also, have a look at the following code:
clearvars; clc; close all;
% creation of signals
N=1024;
n=0:N-1;
x=sin(2*pi*(2^-7).*n);
y=2*sin(2*pi*(2^-7).*n+pi/4);
% justify its power
x1=x/sqrt(mean(x.^2));
y1=y/sqrt(mean(y.^2));
%plots
figure;
subplot(2,1,1);
plot(x); hold on;
plot(y); grid on; zoom on;
legend('x', 'y');
subplot(2,1,2);
plot(x1); hold on;
plot(y1); grid on; zoom on;
legend('x1', 'y1');
3 Comments
Hamza Ashraf
on 21 Aug 2020
hi sir the above code reduces the signal y. i want to know how to increase amplitude of x to match y
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!