multiplying audio signal by using Matlab

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 件)

カテゴリ

ヘルプ センター および File ExchangeGet Started with Signal Processing Toolbox についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by