Multiplication of sound and sinusoidal signal

5 views (last 30 days)
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
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.

Sign in to comment.

Accepted Answer

Omer Yasin Birey
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;
  1 Comment
ali okumus
ali okumus on 18 Dec 2018
Thank you very much .I really appreciated your help .it worked for me .

Sign in to comment.

More Answers (2)

Jan
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.

ali okumus
ali okumus on 18 Dec 2018
Dear friends
I really appreciate your concerns .i got my problem solved. thank you .

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!