I have an audio signal ( of my voice ) .However,I want to multiply it by cosine function.
t=[1:1000];
n=cos(2*pi*fc*t);
[y fs]=audioread('message.wav');
How can I do that ?

 採用された回答

Star Strider
Star Strider 2020 年 3 月 24 日

0 投票

The cosine signal must be the same size as ‘y’.
One way to define it as such:
t = linspace(0, 1, fs);
Then create the cosine funciton to be what you want.
Try this:
t = linspace(0, 1, fs);
fc = 440;
n=cos(2*pi*fc*t).';
y_new = y .* n;
sound(y_new,Fs)

6 件のコメント

Gentle EE
Gentle EE 2020 年 3 月 24 日
It gives me an error massage saying
Matrix dimensions must agree. in y_new = y .* n;
Star Strider
Star Strider 2020 年 3 月 24 日
Try this:
y_new = bsxfun(@times, y, n);
The size of ‘y’ was not specifically stated.
Gentle EE
Gentle EE 2020 年 3 月 24 日
oh sorry I'm pretty new to the matlab
The size of ‘y’ is   360856 2 
and for this command y_new = bsxfun(@times, y, n); it gives me an Error message.
Non-singleton dimensions of the two input arrays must match each other.
sorry to bother you
Star Strider
Star Strider 2020 年 3 月 24 日
Then define ‘t’ as:
t = linspace(0, 1, size(y,1));
That will equalise their lengths. You will need to define your cos call correctly to produce the result you want.
One possibility that may make that easier:
t = linspace(0, 1, size(y,1))/fs;
Experiment to get the result you want.
Remember that the cos call must produce a column vector.
The easiest way to do that is to use the (:) subscript convention to force ‘t’ to be a column vector:
n=cos(2*pi*fc*t(:));
This assumes that ‘fc’ is a scalar.
Gentle EE
Gentle EE 2020 年 3 月 24 日
Thank you so much !
Star Strider
Star Strider 2020 年 3 月 25 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (0 件)

製品

Community Treasure Hunt

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

Start Hunting!

Translated by