Zaloguj się
Blog na Matlablog
Forum polskich użytkowników
 
UŻYTKOWNICY GRUPY PROFIL Zaloguj się, by sprawdzić wiadomości FAQ
 



Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Czas próbkowania sygnału
Forum MATLAB Strona Główna-> Przetwarzanie sygnałów
Post Wysłany: 24 Czerwca 2016, Pią 3:40 pm Temat postu: Czas próbkowania sygnału Odpowiedz z cytatem
 
AUTOR:
Dissp
Początki pisania


Dołączył: 26 Maj 2016
Posty: 13


Ogląda profil użytkownika Wyślij prywatną wiadomość
Witam.

Mam wzór
u(t)= U*w*t*sin*w*t,

U - napięcie
w - omega
t - czas


okres sygnału
-T/ 2 \< t \< T /2;

\< = mniejsze równe

Chcę zrobić symulacje sygnału okresowego w postaci funkcji czasu.
Mam problem jak wpisać w matlabie czas próbkowania sygnału.

Byłby w stanie ktoś pomóc?

Z góry dziękuję za pomoc. Pozdrawiam.




Ostatnio zmieniony przez Dissp dnia 25 Czerwca 2016, Sob 3:25 pm, w całości zmieniany 1 raz
 

Post Wysłany: 24 Czerwca 2016, Pią 4:30 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
Łazik
Może pisać książki


Dołączył: 31 Maj 2013
Posty: 100
Skąd: Polska


Ogląda profil użytkownika Wyślij prywatną wiadomość
W jakiej postaci chcesz zrobić tę symulację? Jako wyrażenie symboliczne, w Simulinku, czy też potrzebujesz napisać zwykłą funkcję albo chcesz wygenerować wektor podstawy czasowej i wektor wartości funkcji?
Wzór który wpisałeś wyglądanie do końca poprawnie, nie piszemy sin*x, raczej sin(x).
Pokaż co masz do tej pory.



_________________
cody/players/4345310
 

Post Wysłany: 25 Czerwca 2016, Sob 9:30 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Łazik
Może pisać książki


Dołączył: 31 Maj 2013
Posty: 100
Skąd: Polska


Ogląda profil użytkownika Wyślij prywatną wiadomość
Chodzi o coś takiego?

Kod:

% przykładowe wartości
U
= 3;         %   3 V
w
= 2*pi*10;   %  10 Hz
T
= 2;         %   2 s
N
= 1000;      % liczba próbek

% generowanie podstawy czasowej i sygnału

t
= linspace(-T/2, T/2, N);
u = U*w*t.*sin(w*t);



_________________
cody/players/4345310


Ostatnio zmieniony przez Łazik dnia 25 Czerwca 2016, Sob 9:36 am, w całości zmieniany 1 raz
 

Post Wysłany: 25 Czerwca 2016, Sob 9:33 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Dissp
Początki pisania


Dołączył: 26 Maj 2016
Posty: 13


Ogląda profil użytkownika Wyślij prywatną wiadomość
Chcę zrobić symulację sygnału okresowego u(t) w funkcji czasu.

Mam ustalone wartości : napięcia, okresu, częstotliwości, liczby próbek.

Następnie dałem pętle, która przypisuje do zmiennej liczby od 1 do N.

I dalej wpisałem swój wzór.


Kod:

U
=
T=
f=
N=
t=
itd.

for
k = 1 : N
    
    u1
(k) = U*(w*t(k))*sin(w*t(k));

Mam coś takiego na razie. Te wartości mam oczywiście wpisane po =.




Ostatnio zmieniony przez Dissp dnia 25 Czerwca 2016, Sob 3:26 pm, w całości zmieniany 1 raz
 

Post Wysłany: 25 Czerwca 2016, Sob 9:48 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Łazik
Może pisać książki


Dołączył: 31 Maj 2013
Posty: 100
Skąd: Polska


Ogląda profil użytkownika Wyślij prywatną wiadomość
Edytowałem swój poprzedni wpis do twoich potrzeb. Takie rzeczy można policzyć w pętli, ale w matlabie się tego zazwyczaj nie robi.
Zauważ, że łatwiej wygenerować "czas" za pomocą funkcji linspace
Kod:
t = linspace(wart_początkowa, wart_końcowa, ilość_próbek);


Kiedy wygenerujesz wektor czasu, zamiast używać pętli for możesz obliczyć próbki sumulowanego sygnału dla wszystkich próbek "na raz". Nazywamy to wektoryzacją kodu. Taki zapis, kiedy się do niego przyzwyczaić, jest bardziej zwarty i zwykle bardziej czytelny. Największą zaletą jest to, że w matlabie kod zwektoryzowany zwykle liczy się szybciej.



_________________
cody/players/4345310
 

Post Wysłany: 25 Czerwca 2016, Sob 10:08 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Dissp
Początki pisania


Dołączył: 26 Maj 2016
Posty: 13


Ogląda profil użytkownika Wyślij prywatną wiadomość
Jak użyć tej wektoryzacji kodu. To jest funkcja myVector? Ma zawierać to co pętla for?


 

Post Wysłany: 25 Czerwca 2016, Sob 10:27 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Łazik
Może pisać książki


Dołączył: 31 Maj 2013
Posty: 100
Skąd: Polska


Ogląda profil użytkownika Wyślij prywatną wiadomość
To nie jest zwektoryzowane:
Kod:
for k = 1 : N
    u1
(k) = U*(w*t(k))*sin(w*t(k));
end

a to juz jest:
Kod:
u1 = U*w*t.*sin(w*t);

To wszystko.

Czyli zamiast wywoływać dla każdego k=1:N w pętli wartość czasu t(k), wykonywać obliczenia i przypisywać wartości do odpowiednich u1(k) liczysz "wszystko na raz".

Zwróć uwagę na użycie innego operatora mnożenia: .*
Chodzi tutaj o mnożenie tablicowe.
Więcej na ten temat możesz doczytać w dokumentacji: Array vs. Matrix Operations



_________________
cody/players/4345310
 

Post Wysłany: 25 Czerwca 2016, Sob 7:52 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
Dissp
Początki pisania


Dołączył: 26 Maj 2016
Posty: 13


Ogląda profil użytkownika Wyślij prywatną wiadomość
Kod:

U
=20;
T=0.1;
f=1/T;
N=20;
t=[-T/2:T/N:5*T/2-T/N];
w=2*pi*f;

u1=U*(w*t).*(sin(w*t));


http://i64.tinypic.com/9pxuaa.jpg
Po lewej stronie sinusoida, która mi wychodzi, a powinna być taka jak po prawej.

Jakieś pomysły co może to powodować?


 

Post Wysłany: 25 Czerwca 2016, Sob 9:06 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
Łazik
Może pisać książki


Dołączył: 31 Maj 2013
Posty: 100
Skąd: Polska


Ogląda profil użytkownika Wyślij prywatną wiadomość
Czas należy przeliczyć modulo T z przesunięciem T/2:
Kod:
U=20;
T=0.1;
f=1/T;
N=200;
t=[-T/2:T/N:5*T/2-T/N];
w=2*pi*f;
y = mod(t+T/2,T)-T/2;
u = U*w*y.*sin(w*y);
plot(u);



_________________
cody/players/4345310
 

Post Wysłany: 2 Lipca 2016, Sob 4:39 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
Dissp
Początki pisania


Dołączył: 26 Maj 2016
Posty: 13


Ogląda profil użytkownika Wyślij prywatną wiadomość
Łazik napisał:
Czas należy przeliczyć modulo T z przesunięciem T/2:


Mógłbyś wyjaśnić dlaczego czas należy przeliczyć modulo T z przesunięciem T/2?


 

Post Wysłany: 2 Lipca 2016, Sob 6:28 pm Temat postu: Re: Czas próbkowania sygnału Odpowiedz z cytatem
 
AUTOR:
Łazik
Może pisać książki


Dołączył: 31 Maj 2013
Posty: 100
Skąd: Polska


Ogląda profil użytkownika Wyślij prywatną wiadomość
Napisałeś w pierwszym poście:
Dissp napisał:
okres sygnału
-T/ 2 \< t \< T /2;

\< = mniejsze równe


Zaczynając od początku. Masz funkcję nieokresową f(x). Interesuje Cię przedział wartości tej funkcji w zakresie -½T≤x≤½T. Chcesz, by dla innych wartości x funkcja była okresowa i zwracała wartości ze zdefiniowanego przedziału argumentów. Otrzymujesz inną funkcję, nazwijmy ją g(x) = f(mod(x+½T,T)-½T). To są podstawy matematyczne, bez związku z programowaniem. Jeśli ich nie opanujesz, każde zadanie będzie nastręczać Ci wiele problemów.

Bez tej operacji widziałeś jaki przebieg otrzymasz.
Dla porównania wykonaj poniższy kod w MatLabie:

Kod:
U=20;
T=0.1;
f=1/T;
N=200;
t=[-T/2:T/N:5*T/2-T/N];
w=2*pi*f;
y = mod(t+T/2,T)-T/2;
u1 = U*w*y.*sin(w*y);
u2 = U*w*t.*sin(w*t);
plot(t,u1,t,u2);
legend('okresowy','nieokresowy','Location','NorthWest');


Teraz spójrz na kod, na różnice między u1 i u2. W u1 używamy zmodyfikowanej tablicy czasu, dzięki czemu wymuszamy przebieg okresowy, którego szukałeś. Możesz zobaczyć wykres zmienionej podstawy czasu wywołując w MatLabie dodatkowo komendę poniżej. Jak widać, po modyfikacji funkcją modulo, otrzymaliśmy sygnał piłokształtny.
Kod:
plot(t,y)



_________________
cody/players/4345310
 

Forum MATLAB Strona Główna-> Przetwarzanie sygnałów
Wyświetl posty z ostatnich:   

Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wszystkie czasy w strefie CET (Europa)

Skocz do:  

Statystyki forum:



Od dnia 08.06.2006 forum odwiedzano 39783767
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
BOTOKS cda CAŁY FILM online 2017  (11 Grudnia 2017, Pon 12:11 am)
odnajdywanie kodu zamka  (10 Grudnia 2017, Nie 7:56 pm)
Generacja krĂłtkiego skoku po wykryciu zbocza  (9 Grudnia 2017, Sob 8:13 pm)
Rozmieszczenie kwadratĂłw na danej powierzchni  (9 Grudnia 2017, Sob 6:12 pm)
suma kwadratĂłw odległości  (9 Grudnia 2017, Sob 2:35 pm)
Templariusze odcinek 1 gdzie obejrzeć?  (8 Grudnia 2017, Pią 1:25 pm)
Templariusze odcinek 1 transmisja na Ĺźywo (HD)  (8 Grudnia 2017, Pią 1:14 pm)
Templariusze odcinek 1 online [HD]  (8 Grudnia 2017, Pią 1:14 pm)
Belfer S02E08 online CDA Zalukaj Sezon 2 Odcinek 8  (6 Grudnia 2017, Sro 11:22 pm)
Z Nation S04E11 online PL napisy 4x11 CDA Zalukaj  (6 Grudnia 2017, Sro 11:22 pm)
Twoje prawa:
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać plików na tym forum