Zaloguj się
Blog na Matlab.pl
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 36715364
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
Przetwarzanie strumienia ASCII odebranego protokołem UDP  (24 Czerwca 2017, Sob 5:55 pm)
zamiennik funkcji smooth  (23 Czerwca 2017, Pią 1:30 pm)
Warto robić szkolenia?  (22 Czerwca 2017, Czw 8:40 am)
Rysowanie sygnałów Sygnały okresowe  (21 Czerwca 2017, Sro 6:52 pm)
Błąd przy inicjowaniu sieci LVQ  (21 Czerwca 2017, Sro 4:39 pm)
Czy wypada być z byłym chłopakiem przyjaciółki?  (21 Czerwca 2017, Sro 2:19 pm)
Artykuły o Matlab  (21 Czerwca 2017, Sro 9:46 am)
Czy wasz człowiek też jest dziwny?  (20 Czerwca 2017, Wto 1:59 pm)
Poprawianie matury to wstyd?  (20 Czerwca 2017, Wto 8:53 am)
Gdzie po szybką pożyczkę?  (17 Czerwca 2017, Sob 12:43 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