Creating a matrix of sinusoids with frequency increasing over columns and time increasing over rows

7 ビュー (過去 30 日間)
I need to create a matrix/array of sinusoids with time vector increasing along rows and frequency vector increasing along columns.
t = a:int:b
f = c:int:d
y(t, f) = sin(2*pi*f*t)
The desired result is as follows (column and row headings are added for clarity of the question here):
Y{} =
f0 f1 f2 ... fn
-- --
t0 |sin(2*pi*f0*t0) sin(2*pi*f1*t0) sin(2*pi*f2*t0) ... sin(2*pi*fn*t0)|
t1 |sin(2*pi*f0*t1) sin(2*pi*f1*t1) sin(2*pi*f2*t1) ... sin(2*pi*fn*t1)|
t2 |sin(2*pi*f0*t2) sin(2*pi*f1*t2) sin(2*pi*f2*t2) ... sin(2*pi*fn*t2)|
...| ... ... ... ... ... |
tn |sin(2*pi*f0*tn) sin(2*pi*f1*tn) sin(2*pi*f2*tn) ... sin(2*pi*fn*tn)|
-- --
Help is appreciated, thanks

採用された回答

Mohammad Abouali
Mohammad Abouali 2014 年 10 月 3 日
minT=0;
maxT=1;
dT=0.01;
minF=1;
maxF=4;
dF=1;
[Time,frequency]=ndgrid( minT:dT:maxT , minF:dF:maxF );
y=sin(2*pi*frequency.*Time);
plot(Time,y);axis tight
  2 件のコメント
Matt J
Matt J 2014 年 10 月 3 日
Rick's version is more efficient, however. The use of ndgrid consumes more time and memory than the simple outer product t*Fc.

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

その他の回答 (1 件)

Rick Rosson
Rick Rosson 2014 年 10 月 3 日
編集済み: Rick Rosson 2014 年 10 月 3 日
Fs = 48000;
dt = 1/Fs;
t = (0:dt:0.25-dt)';
Fc = 60*(1:2:15);
y = sin(2*pi*t*Fc);

カテゴリ

Help Center および File ExchangeNumerical Integration and Differential Equations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by