Multiplication of sound and sinusoidal signal
5 views (last 30 days)
Show older comments
ali okumus
on 18 Dec 2018
Commented: Oswaldo Colin Martinez
on 26 Nov 2020
clc;
[a,Fs]=audioread("music.wav");
%sound(a,Fs);
si=size(a);
t=si/Fs;
t2=0:1/Fs:1;
f=15000;
signal=sin(2*pi*f*t2);
A=a';
K=A*signal;
When i try to multply i got an error . idont know what to do ?
1 Comment
Jan
on 18 Dec 2018
If you get an error message and want the forum to help you, it is useful to post a copy of the complete message. It is easier to solve a problem than to guess, what the problem is.
Note that size(a) replies a vector. This is not a problem here, because t is not used anywhere.
Accepted Answer
Omer Yasin Birey
on 18 Dec 2018
Edited: Omer Yasin Birey
on 18 Dec 2018
The problem here is you take the t2 until 1 second, when your sound lasts more (or less) than 1 second
t2=0:1/Fs:1;
However it must last until the duration not until 1. Therefore, change this line with
t2=0:1/Fs:duration;
And also I believe you want to do element wise multiplication so put a dot before the multiplication sign.
clc;
[a,Fs]=audioread('music.wav');
duration = length(a)./Fs;
si=size(a);
t=si/Fs;
t2=0:1/Fs:duration-1/Fs;
f=15000;
signal=sin(2*pi*f*t2);
A=a';
K=A.*signal;
More Answers (2)
Jan
on 18 Dec 2018
Edited: Jan
on 18 Dec 2018
I guess, you want this:
[a, Fs] = audioread('music.wav');
len = size(a, 1);
t = (0:len - 1) / FS; % time in seconds
freq = 15000;
signal = sin(2 * pi * freq * t);
result = a .* signal.';
This multiplies even stereo signals, but you need >= R2016b for the auto-expanding. Please ask, if you use an older Matlab version.
1 Comment
See Also
Categories
Find more on Spectral Measurements 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!