Creating a matrix of sinusoids with frequency increasing over columns and time increasing over rows
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Nate
am 3 Okt. 2014
Kommentiert: Matt J
am 3 Okt. 2014
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
0 Kommentare
Akzeptierte Antwort
Mohammad Abouali
am 3 Okt. 2014
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 Kommentare
Matt J
am 3 Okt. 2014
Rick's version is more efficient, however. The use of ndgrid consumes more time and memory than the simple outer product t*Fc.
Weitere Antworten (1)
Rick Rosson
am 3 Okt. 2014
Bearbeitet: Rick Rosson
am 3 Okt. 2014
Fs = 48000;
dt = 1/Fs;
t = (0:dt:0.25-dt)';
Fc = 60*(1:2:15);
y = sin(2*pi*t*Fc);
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!