generowanie sygnału dyskretnego - matlab

0

Witam
Mam za zadanie zrobić coś takiego:

Generowanie i rysowanie różnych sygnałów. Pisanie skryptów.
x(t)=A*sin(2πft+ϕ)

  1. Wygenerować sygnał sinusoidalny o częst. próbkowania fs=1000 Hz i częst. sygnału f∈(10,200) Hz. Czas trwania T∈(75,225) ms.
  • narysować wykres sygnału z prawidłową osią czasu

Zacząłem dodawać zmienne:

t = (0.001*linspace(75,225))';
f = linspace(10,200)';
fs = 1000;

i teraz:

x = sin(2*pi*f*t)

i wyskakuje błąd:

Error using *
Inner matrix dimensions must agree.

Nie wiem dlaczego; tzn wiem co to znaczy ale rozmiary macierzy są zgodne. Nie wiem też gdzie wrzucić tę częstotliwość próbkowania?
Wykres rysuję tak:

plot(t,x), xlabel('t');

Proszę o pomoc.
Pozdr!

1

Masz dwie macierze o wymiarach 1x100, nie możesz ich tak pomnożyć :P
Spróbuj użyć .*

0

Dzięki wielkie!
Wyszło coś takiego:
Zrzut_ekranu_2015-10-11_o_21.45.35_2_png_300x300_q85.jpg
i nie wiem czy dobrze.
Oraz co z tą częstotliwością próbkowania? Nie trzeba jej nigdzie wykorzystywać bo za bardzo nie wiem gdzie...

1

Z tego co zrozumiałem z zadania, to masz wygenerować sygnał dla przedziału czasowego 75-225 ms, na którego składają się częstości od 10 do 200 Hz. Częstotliwość próbkowania mówi Ci ile próbek sygnału znajduje się w jednostce czasu. Np. próbkowanie 1000 Hz'ów oznacza, że w jednej sekundzie jest 1000 próbek sygnału. Jeżeli dobrze zrozumiałem zadanie, to Ty je wykonałeś źle.

Przypuszczam, że powinieneś w rezultacie dostać:

figure_1.png

...a po wyświetleniu zakresu czasowego od 75 do 225 ms powinieneś otrzymać coś takiego:

figure_2.png

Ogólnie rzecz biorąc powinieneś wykonać następujące kroki:

  1. Zdefiniować "krok czasowy" na bazie częstotliwości próbkowania, tj.dt = 1.0 / sampling_frequency.
  2. Stworzyć skalę czasu, tj. ts = arange(0, time_in_seconds(czyli 0.225), dt).
  3. Zdefiniować funkcję do tworzenia sinusów, np.:
sin(signal_frequency, time_scale, phi):
    return sin((2 * PI * signal_frequency * time_scale) + phi)
  1. Stworzyć wektor częstotliwości, tj. frequencies = arange(10, 201).
  2. Zdefiniować zmienne x i y, tj. x = time_scale i y = zeros(size(time_scale)).
  3. W pętli utworzyć funkcję sin dla każdej z częstotliwości i dodać je do zmiennej y:
for f in frequencies:
    y += sin(f, time_scale, 0)

1 użytkowników online, w tym zalogowanych: 0, gości: 1