Multiplication of sound and sinusoidal signal
7 次查看(过去 30 天)
显示 更早的评论
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 个评论
Jan
2018-12-18
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.
采纳的回答
Omer Yasin Birey
2018-12-18
编辑:Omer Yasin Birey
2018-12-18
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;
更多回答(2 个)
Jan
2018-12-18
编辑:Jan
2018-12-18
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spectral Measurements 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!