MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs...

31
32/,7(&+1,.$*'$ 6.$ :<'=,$à,1)<1,(5,,/'2:(- MATLAB – PODSTAWY PROGRAMOWANIA ROBERT JANKOWSKI, IZABELA LUBOWIECKA, WOJCIECH WITKOWSKI *'$6.

Transcript of MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs...

Page 1: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

��� � ���� �� � ��� ��

������������������� ��

MATLAB – PODSTAWY PROGRAMOWANIA

ROBERT JANKOWSKI, IZABELA LUBOWIECKA, WOJCIECH WITKOWSKI

�����������

Page 2: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

2

�����

• ���������������������� !�"��������#$ ���%#���&'�#�%(��("��"�%���#�� )%��������������#"'��

*"$���!+������# ������� � �"��","!�#�# ���!�� �#"�$ -"� �"��%,�����"(� ,"' �� �'������%MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki.

• ������'�����!���!��������%�",&'�"�"��"#�� '"'��.%��!��/�"��� !���� �, !���� !+0�#�� ) ��

tablicowe, operatory logiczne oraz elementy algebry liniowej.• ��� �������� !���!�� �"� � �"� �� !�� '� ��'1� ������ !+�'� �� �� �����%�!� ,�� ����%��!�,�� "� �

zastosowaniem funkcji.• �"$�����!���2�������%��"�'��!"�"�(� .�!��#'%3�����&�'�,� �"'��1

• �� "�� ������ !���!�� �"� � �"� �����) #"'�� ��"(� ,�� �� #���#����� ,�!+ ����� -%#"'$�0

'�����, )"�!��, ���� )&'���#�� ,���1

• ��� ) �� � �"��!��(&$��!+� �����%�!��� �"-� �"' �"� '� �"�� !�� $�!���!+� �����) #&'

przeznaczonych do samodzielnego wykonania.• �������!���!�!�"����courier�'��&���"�"��",��#������� �4�5��61

• ����&��� �����) #�� ��"(� ,&'� �"!+"#��� �� �������� �1� Zalewskiego i R. 7�(��)�� ��1

„MATLAB – obliczenia numeryczne i ich zastosowania”, Wydawnictwo �",0� *"�� �1997.

Page 3: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

3

�������������������������������� �!�"����#

• MATLAB - pakiet obliczeniowy firmy MathWorks jest przeznaczony do wykonywania�&��"�"#��!+�"-$�!�����%,���!���!+1

• ���!�� � ����%� �� �"'�� ������������ ����� � %,"�$�'� ��!�� �,�$�,��� !��� $("���,&'

�%,���!���!+� "� �� -�-$�"����� �"#�� '"'�!+� #�� ) �� � � , !���� !+� 8"#'� ! ���0

#"# ' ���9"#��,"' ���0�' ��"�!��') �������1:1

• *"#�� '"'�,�����,�# ��!+������, !����0����#�� �' �MATrix LABoratory.• * ����� �"�� # � "-������� -�-$�"����� #"# ��"'�!+� ��"!�#%�� %,"�$�'� ��!�� �"�'����' ���

typowych problemów obliczeniowych.• *�"�� �-%#"' �"�����"' �%) �'� ��"����� ��������"(� ,%1

• � �' ���������!�� ������'��% $�� !� �'����&'�'��"�� !��#'%3�����&�'�,� �"'�!+�'�����&'1

• �"# ��"'�� � $���� � ����%� 4�5��6� ����� ,"�$�'"�2� ������"' #���� � "-$�!���symbolicznych (na wzorach).

�������������������$ ������������!���� ���"����#

• *� ! �'���"#"'���%������ �4�5��6��"$�( �� �'�# ' ��%��"$�!��0���&����"�� �'���#����%

'��"��' �����������������������1• �������� $�!�-�� �����%�!��� ,"�� � � ��� 2� '� �-�"���� �����"'�,� �' ��,� �������,� 8�$���� �

rozszerzeniem .m).

��� �%�� ���&�$��

• Podstawienie: » a=3;powoduje utworzenie zmiennej a�"�' ��"�!��;1UWAGA:��#�����"��"$�!���%��"'"#%��0����' ��"�2�-�#�! �'������,�����-�#����'��'���$ � ��

ekranie.

» b=sin(a)b = 0.1411"-$�!� �' ��"�2�.%��!������%��#$ ��,�������a, wynik zapisuje do zmiennej b���'��'���$ ��

ekranie.

• ����$�������"# �"�� �'���,��������"�'�����#�� ) �� ������%,����!� ���'��� �# �#"'��

zmiennej ans.

• <�'"��"� �8�#�.���"' � :��,���� ������� ,��� � �"#�,",���%�%�'"����� 0� ��#"�!+'�$�����

%�%���!� 1�4"�$�' �������������,�������$�"��,� � �' ��"�!�0� $���&'������"�,� �%��,������1

�'���,�����!+�����."�, !���"���!+�,"�� �%���� 2�'�'")%��!�.%��!���who i whos.

• <�%���!����,���������� ,��!�/

Page 4: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

4

clear c A - usuwa zmienne c i A;clear 3�%�%' �'����������,�������� �#%��!������'�� ,��!�1

• Zapisanie zmiennych na dysku:save nazwa_pliku�8#",��$���������,"' ���������"�����������.mat).

• Wczytanie danych z pliku dyskowego:load nazwa_pliku

• �"����� �������"#��!������","!���"# ��!���"����.%��!��/help nazwa_funkcji

• � ' ��"�2� ��% $��("�� � $"(%�,"�� �'��'���$�2�%��' ��!�.%��!���dir lub ls.

• �"��,� ���� � $"(%��)%����"$�!����/cd nazwa_katalogu

Liczby rzeczywiste i ich formaty

• *"#�� '"'�,�����,�#$ ��$�,���&'�, !������'��"������' ��,�������4�5��6����$�!�-�rzeczywiste.

• 4 ���, $�����,���, $���' ��"�2�$�!�-�����!��'������#"# ������,"�� ��"�� 2�� ��","!�funkcji realmin i realmax.

• �"�"����$��� ���"�"-%0�'�� ���$�!�-�����!��'������������#�� '�"���� ���� �����)%����"$�!����format ���������� , gdzie ���������� �"����$ ��"�� 20�'�� �����$�!�-�����!��'����

-�#��'��'���$ ���� ���� ����8��1�short, short e, long).

��������

*���#�� '�$�!�-���0=�'��&������"�� !��%��' ��!�.%��!���format.» format short» 2.5ans = 2.5000» format short e» 2.5ans = 2.5000e+000» format long» 2.5ans = 2.50000000000000

Page 5: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

5

Macierze

• Definicja macierzy przez wyliczenie elementów:

��������» A=[2 2 2 1; 1 2 3 1]A = 2 2 2 1 1 2 3 1��������, !������"##���$ ��������#��� ,�0� ��"��!��(&$����$�,������� !� ,�1�������� #�%

#�.���!���, !������'������!��0�'�������,"�� ��&'�����%,����!� 2�'�"##���$��!+�$��� !+0���1/A=[2 2 2 1 1 2 3 1];

• Definicja macierzy przez wygenerowanie elementów:A=[min:krok:max]*"$�!�����(����%���'���"���"!��� ��!�"#��$�,���%�"�' ��"�!��min0��"�!��!�� ��$�,��!���"

' ��"�!��max z krokiem krok1�����$��� � ,����krok��"�� �����",������0������,%������0���krok=1.

��������

��(����%��, !�����#'%'�����"'��"�'�� � !+�"#���#"����'�����'���,�'�����%���"�'�� � !+

od 2 do 20 (co 2) w wierszu drugim.» A=[1:10; 2:2:20]A = 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20

• ��.���!� �, !������'��"�����%��!��$�,���������!+�, !�����/

��������

Utwórz macierz D�-%#%��!��������#�.���"' ��!+�, !������A, B i C.» A=[1 4 1; 2 0 1];» B=[3 1; 4 1];» C=[1 2 2 0 1; 2 4 7 1 0];» D=[A B; C]D = 1 4 1 3 1 2 0 1 4 1 1 2 2 0 1 2 4 7 1 0UWAGA:*����� ��,�-%#"' ��%�, !������� $����� ,��� 2�"��("#�"�!��'�,� �&'1

Page 6: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

6

'!��$�������������$������(�!���������$����

• Definicja macierzy jednostkowej o wymiarach nxn lub mxn:A=eye(n)A=eye(m,n)A=eye([m n])

• Definicja macierzy o wymiarach nxn lub mxn�'���)��"������#��� ,�/A=ones(n)A=ones(m,n)A=ones([m n])

• Definicja macierzy o wymiarach nxn lub mxn�'���)��"������� ,�/A=zeros(n)A=zeros(m,n)A=zeros([m n])

���(�������&����()����$����

• #'") ����#"��$�,���&'/

��������» A=[1 2 3; 0 9 8; 1 1 0]A = 1 2 3 0 9 8 1 1 0» A(2,3) �3�"#'") ����#"��$�,���%�;�'�'�����%��>ans = 8» A(3,2) �3�"#'") ����#"��$�,���%���'�'�����%�;1ans = 1

• #'") ����#"��"#, !�����/

��������» A=[1 2 3 4 5 6; 0 9 8 7 6 5; 1 1 0 0 2 2]A = 1 2 3 4 5 6 0 9 8 7 6 5 1 1 0 0 2 2» B=A(:,[1:3 5]) - utworzenie macierzy B poprzez pobranie z macierzy AB = kolumn: 1-3 oraz 5

Page 7: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

7

1 2 3 5 0 9 8 6 1 1 0 2» B=A([1 3], 1:2:5) - utworzenie macierzy B z elementów macierzy A�$���!�!+B = ����� �����!��!�%�'�����������;����"$%,� ,���0�;���= 1 3 5 1 0 2

• Usuwanie wektora z macierzy:

��������» A=[1 2 3 4; 4 5 6 7]A = 1 2 3 4 4 5 6 7» A(2,:)=[ ] - usuwa drugi wiersz macierzy AA =

1 2 3 4» A(:,1:2)=[ ] - usuwa dwie pierwsze kolumny macierzy AA = 3 4 6 7

� �������� ����(&�������$����

• [n,m]=size(A) 3��'� ! �$�!�-��'�������m i kolumn n macierzy A;• n=length(X) - zwraca wymiar wektora X�8$%-�'���������'�,� �&'�, !������X);• disp(A) lub A - pokazuje macierz A na ekranie;

����%����������$�����$*

• �%, ����&���! �, !�����

��������

Zdefiniuj dwie macierze A i B0� �� ��������"-$�!���!+��%,�0��&���!��"� ��#"# ��#"��$�,���&'

macierzy A�$�!�-���1

Definicja macierzy:» A=[1 -1 2; -2 3 1]A = 1 -1 2 -2 3 1» B=[1 1 1; 0 -2 2]

Page 8: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

8

B = 1 1 1 0 -2 2

Suma:» A+Bans = 2 0 3

-2 1 3

�&���! /» A-Bans =

0 -2 1-2 5 -1

Suma A+2:» A+2ans =

3 1 4 0 5 3

• 4�"������, !�����

��������

Zdefiniuj dwie macierze A i B0� �� ��������"-$�!���!+��$"!����"� ���",�&���$�,�����, !�����

A przez 2.

Definicja macierzy:» A=[1 1 0; 2 1 1]A =

1 1 0 2 1 1

» B=[2; 2; 2]B=

2 2 2

Iloczyn macierzowy:» A*Bans =

4 8

�$"!����, !������������$�!�-�/» A*2

Page 9: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

9

ans = 2 2 0 4 2 2

• Odwracanie i transpozycja

inv(A) lub A^(-1) 3��'� ! �, !�����"#'�"����#"�AA’ - transponuje macierz A

��������

Zdefiniuj macierz A0� �� ��������'��� !��, !�����"#'�"����#"��������#"�"� ���� ���"��!��1

» A=[1 2 3; 0 9 8; 3 4 7]A =

1 2 3 0 9 8

3 4 7»inv(A)ans = -15.5000 1.0000 5.5000 -12.0000 1.0000 4.0000 13.5000 -1.0000 -4.5000» A’ans =

1 0 3 2 9 4 3 8 7

��� ���������������������������������������������

• ����������Zdefiniuj dwa wektory kolumnowe x i y0� �� ��������"-$�!���$"!������ $ ���/

» x’*y

• ���������� -$�!���%,���' #� �&'��$�,���&'�# ��("�'���"� �x:

» x’*x

����%�����(�+&�$���

• ��� ) ����� -$�!"'�������#�� ) ���,0���&����������� )! ��"��!��(&$����$�,�����, !�����

oddzielnie.

Page 10: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

10

��������

Zdefiniuj dwie macierze A i B0� �� ��������'��"� ��#�� ) �� �,�"���� 0�#���$��� ���"��("' �� �� -$�!"'�("1

Definicja macierzy:» A=[5 -6 2; -2 4 1]A = 5 -6 2 -2 4 1» B=[5 2 2; -1 -2 1]B = 5 2 2 -1 -2 1

4�"������� -$�!"'�/» A.*Bans = 25 -12 4

2 -8 1

Dzielenie tablicowe:» A./Bans = 1 -3 1

2 -2 1

*"��("' ����� -$�!"'��8�"#�����������$�,���&'�, !������A�#"�#�%(�����"��(�:/» A.^2ans = 25 36 4

4 16 1

Operatory logiczne

• ��� �"���$"(�!����'������%�4�5��6/

= = równe~ = �&���< mniejsze> '������< = mniejsze równe> = '��������&'��

& i | lub

Page 11: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

11

Algebra liniowa

• det(A) - obliczanie wyznacznika macierzy A• eig(A) 3�"-$�!� ����' ��"�!��') ���!+�, !������A• poly(A) 3�"-$�!� ����'��&)!������&'�'��$",� �%�!+ � ��������!���("�, !������A• rank(A) 3�"-$�!� �������#%�, !������A• diag(A) 3�'��� !� �����$�,���&'�$���!�!+�� �()&'���������������, !������A

• ��������Zdefiniuj macierz A�"�'�,� ����8?@?:���'��� !������' ��"�!��') ���0�'��� !�����"� �

'��&)!��������'��$",� �%�!+ � ��������!���("1��- # �����#�, !�����1

» A=[1 3 0 –2; 2 0 3 –1; 0 5 0 0; 1 0 2 0];» eig(A)ans = -4.5414 4.0000 1.5414 0.0000» det(A)ans = 0» poly(A)ans = 1.0000 -1.0000 -19.0000 28.0000 0.0000» rank(A)ans = 3

• ���������"�'����%�) #��&'� ��$���"'�!+/

2 3

3 4 2 5

5 2 3 2

x y z

x y z

x y z

+ − = − + = − − + =

UWAGA:<�) #�����,"�� �� ��� 2�'��"�� !��, !����"'��/� ⋅A X = B , gdzie:

1 2 1

3 4 2

5 2 3

− = − −

A ,

x

y

z

=

X ,

3

5

2

= −

B ,

#$ ���&�����"�'��� ����, ��"�� 2/� 1− ⋅X = A B

Page 12: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

12

» A=[1 2 –1; 3 –4 2; 5 –2 3];» B=[3 –5 2]’;» X=inv(A)*BX = 0.2000 1.3500 -0.1000

�����$������%��$!$*�$*

• <�%��)�� ��!�,�����,�# ��!+�'������%�4�5��6����������) �!%!+"'��8�����"'�:1��"

#�.���"' �� ��,���������("����%���"�%������� �"���".�0���1/» s=’MATLAB’;

• �,���� ����%�) �!%!+"'�("�,"���� '��� 2�� �'�������%�!��0���&���,"�� �'��"� 2�%��' ��!funkcji eval.

��������» t=[0:0.2:1];» s=‘sin (t)’;» eval(s)ans = 0 0.1987 0.3894 0.5646 0.7174 0.8415

• 4"�� �'���) 2�� ���� ��'�'") ����� !+����"!���%��!��� �'��"' #������������%����"'���

# ����' ��"�!��$%-�) �!%!+ ��� �&'0���1/

» a=input(‘Podaj wartosc a: ’);Podaj wartosc a:

lub:

» wzor=input(‘Podaj wzor funkcji f(x): ‘,’s’);Podaj wzor funkcji f(x):

UWAGA:<��!���� � ,���%�‘s’ w funkcji input��"'"#%��0����'��"' #�"� �# � �������� ��"' � �� �"

) �!%!+��� �&'1

Skrypty

• �������� ������������8"�'��� ��!���,��%�File z opcji New plik M-file:0���&�������$��'������� # ���

Page 13: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

13

������%����"'��� �.%��!�����#�����,�������'�����#�� $�� 0,4π .

����������������� ��������������������������x=0:0.1:4*pi;wzor=input(‘Podaj wzor funkcji jednej zmiennej f(x): ‘,’s’);y=eval(wzor);plot(x,y); % kreslenie wykresu funkcji y=f(x)

� �����("��"#�� �'��wykres.m0� �� ��������%�%!+",�'���%��!�'�$������",��#���("�� �'�/» wykres

WSKAZÓWKA:*"# ��� ������) #�.%��!��/� ( ) ( )sin 2 cos 2x x+ ⋅ ⋅

���(�!�$����(��!��$�

• *��$ �A ��8B#$ C:/for zmienna_iterowana = ������������

����������end

��� ) �������$���"$�( �� �'��"� ��%�������������#$ ��"$����!+�' ��"�!�zmiennej_iterowanej1�� ��"�!� ,����,������"$�����'���"����"$%,�"'���"-� ����

����� ��������8����$��������"�'���"�0��"��"$���"��"�� ���'��"� ��������%�!���#$ �# ��!+

elementów tego wektora).

��������

Napisz skrypt, który generuje macierz A�"��$�,��� !+����)�� ��!�!+�� $���"�2/

1ij

iA

j= +

% Proba realizacji petli FORN=10;M=5;for i=1:N for j=1:M A(i,j)=sqrt(1+i/j); % pierwiastek kwadratowy endendA

Zapisz skrypt w pliku petlafor.m i uruchom go.

• *��$ ��D���8B#"�&��C:/

Page 14: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

14

while � ��������������������������

end

��� ) �������$���"$�( �� �'��"� ��%������������ dopóki � ���������������� jest���)��"��1

��������% Proba realizacji petli WHILEi=0;while i<100 i=i+1end

Zapisz skrypt w pliku petlawhile.m i uruchom go.

• �����%�!� �' �%��"' ��A�8B����$�C:/if�� �����������������

�����������elseif�� �����������������

�����������else��������������end

��� ) ���������%�!��������� ����%��!�/����$��� ��������������������������)��"��0��"�'��"��' ���������������������wprzeciwnym razie sprawdzane jest � �����������������������$�������"�"����)��"��wykonywany jest �����������������$�����0�'��"��' ��������������������

�����%�!���' �%��"'���A�,"�� ��"�-%#"' 2�#$ �'��������$�!�-��� �������������� � i"#�"'� # ��!�!+��, �������������

��������

������������%��' ��!������%�!���' �%��"'����A�#"���� $��"' �� �'�-"�%���#�����

#"������!+�"�!���8�"$�!�����menu):

% Proba realizacji instrukcji IFo=menu(‘Przykladowe menu’, ‘Opcja 1’, ‘Opcja 2’, ‘Opcja 3’);if (o==1) disp(‘Opcja 1’)elseif (o==2) disp(‘Opcja 2’)elseif (o==3) disp(‘Opcja 3’)end

Zapisz skrypt w pliku instrukcjaif.m i uruchom go.

Page 15: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

15

Funkcje

• �������%�4�5��6����������,"�$�'"�2�#�.���"' �� �') ���!+�.%��!��0�� �"��$�,���&'

���%��%� $��!+���"(� ,%1���.���!� �.%��!���, �� ����%��!���"�� 2/

function[������������� !nazwa_funkcji(argument1,..,argumentN)����������

��������

�����.%��!���8"�'��� ��!���,��%�File z opcji New plik M-file:�'��� !� ��!��' ��"�2���$��n!, gdzie n������$�!�-��� �%� $��1

% Funkcja silnia wyznacza watosc n!function[wynik]=silnia(n)wynik=1;for i=1:n wynik=wynik*i;end

� ���������"#�� �'� silnia.m0� �� ��������%�%!+",�'���%��!�'�$������",��#������ �'��'� ���

' ��"�!��� �(%,���%�n�%,����!�"���'�� '� ���0���1/» silnia(5)ans = 120

Budowa strukturalna programu

• �������0���&����� �"'���'�������! )"�2�� ��' ,����"(� , ,�1

• �������!���,"��,��'�'") 2���������!���%��8'!���������#�.���"' ��:��������������$%-

funkcje.• Polecenie help nazwa_skryptu�'��'���$ �� ���� ����������%,����!�"���'�����'���!+

liniach komentarza.

��������

�������"(� ,0���&���'����%���� ���� ������."�, !���"���("�#�� ) ��%�"� ���,������ �'���"

%�"� 0� �� ��������'��� !� �' ��"�2�n!�#$ ��"# ����������%����"'��� �' ��"�!��n.8<' ( /�%��� �'��"������,������) #����.%��!� �round(n)�� "���($ �$�!�-�����!��'�����n#"�$�!�-��! )�"'����:

% Program oblicza wartosc silni n! dla wprowadzonej przez% uzytkownika wartosci n

disp(‘Program oblicza wartosc silni n! dla wprowadzonej przez’)

Page 16: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

16

disp(‘uzytkownika wartosci n’)disp(‘ ‘)disp(‘Autor:’)disp(‘Imie i Nazwisko’)disp(‘ ‘)n=input(‘Podaj wartosc n: ‘);

%sprawdzenie czy n jest liczba naturalnawhile n<0 | n~=round(n) disp(‘Prosze podac liczbe naturalna’) n=input(‘Podaj wartosc n: ‘);end

silnia(n)

� �����("��"#�� �'��program.m i uruchom.

Grafika dwuwymiarowa

• �!���!������"��� ��,���"�"-�,�(� .�!������������ !���# ��!+�'������%�4�5��6�����

'������.%��!�����#�����,������1��)%���#"���("�.%��!� �plot(x,y), gdzie y=f(x);• ��"�(� .�!����,"�� �'�!���!�2�'�'")%��!�.%��!���clg;• � ,����!���"�� �(� .�!���("�"#-�' ������"������'�'") ����.%��!���close;• �"# ��"'��"�� �,"�� �"�'"���2�������","!��.%��!���figure;• �'"���2�� ����� ,���2�,"�� �#"'"$���"��"��"# ��!���("��%,���� �"� �(%,���>

• ��!�$%�%���� �� ���$�%�'�����&'�'���#��,�"������ $����'��"����� 2�.%��!��subplot(m,n,p), gdzie:m - liczba wykresów w pionie;n - liczba wykresów w poziomie;p - kolejny numer wykresu.

• �� $ �'�����%�#"-��� � ������ %�", ��!����1�7+!�!�����,����20�����- �'�'") 2�.%��!��axis([xmin xmax ymin ymax])���� �"� �(%,�����"# 2�'���"��"����$ ��!���"'�

parametry osi.• �������,"�� �"��� 2��"# ��!�� �'���,�����!+0����%)0����1

title(‘tekst’) 3����%)����%��%>

xlabel(‘tekst’) - opis osi x;ylabel(‘tekst’) - opis osi y;text(x,y,‘tekst’) - umieszcza ‘tekst’�'�#"'"$��,��%��!���"�'��&)���#��!+�8x,y);grid on 3�')�!� ��� ���>grid off 3�'�)�!� ��� ���>

• ��������:Napisz skrypt rysunek.m�����$�!�������) #"'��'������'� ����"����,1

% Przykladowy rysunek

Page 17: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

17

x=0:pi/20:2*pi;y=sin(x);plot(x,y)title(‘Wykres funkcji sin(x)’)xlabel(‘x’)ylabel(‘f(x)’)text(2.5,0.7,’f(x)=sin(x)’)grid on

Rysowanie

• ���������.%��!����"�' $ ��!��� ��'"�������#"'"$��!+����%��&'���$�������'��$"���&'1

line(x,y) 3����%���$�����) , ���)�!��!�'����!+")����%���&'�'��� !�"��!+������

elementy wektorów x i y;fill(x,y,’c’)3����%���'��$"����"�'����!+")� !+�'��%��� !+�'��� !�"��!+������

elementy wektorów x i y�'���)��"����"$"��,�"����$"��,������

argument c�'�#)%(��"������("�"���%��"$"�&'/

y 3��&)�� m - karmazynowy c - siny r - czerwony g - zielony b - niebieski w 3�-� )�

k - czarny

��������: ���%����&�����"�'����!+")� !+�'��%��� !+�8�0�:0�8�0�:0�8;0�:�%��' ��!�.%��!���line orazfill���'���)������,�'��"$"�������-�����,1

» line([1 2 3 1],[1 2 1 1])» fill([1 2 3],[1 2 1],’b’)

Grafika trójwymiarowa

• ������"�2���"!�#%������� �4�5��6�(����%��!�!+����%����;���)%���#"�'�����$ �� �"'����!+��1����� ���!��#�.���%��!��"'����!+��������- �����"(� ��!��2�#"���"�!�"��("�-�"�%��%���&'�� $���!�!+�#"�"-�� �%1

• [X,Y,Z]=meshgrid(x,y,z)�3�.%��!� ��'"����, !������"���%��!���")"������'��)&'��"��"��������� ���1�*")"������'��)&'�"���%���'���"���x, y i z.

Page 18: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

18

• mesh(x,y,z,c)�3�.%��!� ����%����"'����!+����"��� ���������, !������x, y i z w postaci�"$"�"'����� ����"�"!�� !+�'���)��"��!+��"$"��,��) 0�'�#)%(�"���%�� ' ���("�'�, !������c;����$��, !�����c��"�� �����",����� �8#",��$���������,"' ��������'��#��c=z:0��"��"$"��-�#���� $�� )�"#�'��&)���#��!+1

• ����������:

<�'&����� ����' ��"�!��.%��!��� ( ) ( ) ( ) ( )2 2, sin sin expf x y x y x y= ⋅ ⋅ − − w przedziale - , π π .

Program zapisz w postaci skryptu.

close all %usuniecie wszystkich starych rysunkow[X,Y]=meshgrid(-pi:0.2:pi,-pi:0.2:pi)Z=sin(X).*sin(Y).*exp(-X.^2-Y.^2)c=X;mesh(X,Y,Z,c)

���&-%���"#�� '�2�'�,����!��, !������c��"�"�� )��, !���������"- !�0�� ���,������������%���1(polecenie c=Y oraz c=Z>�� ��������%�%!+",������������!���� �:

• ����������:Napisz skrypt:

close all %usuniecie wszystkich starych rysunkow[x,y]=meshgrid((-1:0.1:2)*pi,(-1:0.1:2)*pi); % punkty siatkiz=sin(x).*sin(y)+4*exp(-(x-0.5).^2-(y-0.5)^2);%wartosci funkcjimesh(x,y,z) % rysowanie wykresu

��������� ,�����"$"���� �"#!�������� �"�!��#"# ��!�� ��"�!%���"(� ,%�� ����%��!��$����/colormap(flipud(��� ""#�������������������������

�"�-%#%���������"��"$"�"'���"'����!+����"��� ���, !���� ,��x, y i z poprzez dodanie na�"�!%�$������ '��� ��!����"$�!����/surf(x,y,z);

• 4"�� �'�����$�2��"'����!+����%'�($�#�� ��!�� ������"#-�!����'� �) �%��' ��!�.%��!��/surfl(x,y,z)

����������: ����������������$�!���"'����!+����'��"�����%��!��"'�����������%�!���8�"�&'� ��'������

�,���� ��!�surfl na surf).

close all %usuniecie wszystkich starych rysunkow[x,y]=meshgrid(-10:0.7:10,-10:0.7:10); % punkty siatkir=sqrt(x.^2+y.^2); % oblicza promienie punktowa=atan(x./y); % oblicza katy odchylenia od dodatniej polosid=max(max(a))-min(min(a)) % usuwa skoki kata

Page 19: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

19

z=cos(r-a*2*pi/d)*0.1+0.02*r; % oblicza wartosci funkcjisurfl(x,y,z); % rysowanie powierzchniaxis([-10 10 -10 10 -0.2 0.5] ); % ustala proporcje

• ������$"����"'����!+����,"�� ��"## 2�!����"' ��%�%��' ��!�.%��!��/shading flat;shading interp;shading faceted;

• ����������Napisz skrypt:

close all;[x,y]=meshgrid(-3.5:0.7:3.5);z=sin(x).*sin(y)+4*exp(-(x-0.5).^2-(y-0.5)^2); % z przykladu 2

%Wykres w trybie flatsubplot(1,3,2)surf(x,y,z)shading flattitle(‘flat’)

%Wykres w trybie interpsubplot(1,3,3)surf(x,y,z)shading interptitle(‘interp’)

%Wykres w trybie facetedsubplot(1,3,1)surf(x,y,z)shading facetedtitle(‘faceted’)

• ������$�,��������%��&'0�� ����� �/�"����0���������0�$������","!��!���'��"�%��������"#"-���0� ��'�(� .�!��#'%'�,� �"'��1��"# ��"'"���#� ��� $�����#�.���"' 2��$�,�����#"��!��!�trzeciego wymiaru, np.:text(x,y,z,’tekst’);

��� �%�� ��������)������� �!�"����#

• ����������

%Program rysuje wykres wybranej funkcji:%f(x)=exp(x), f(x)=exp(x+sin(x)), y=exp(x+log(x)),%f(x)=exp(x+(3*x+1))

Page 20: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

20

%w zadanym przez uzytkownika przedzialeclearclcdisp(' Program rysuje wykres wybranej funkcji:')disp('f(x)=exp(x), f(x)=exp(x+sin(x)), y=exp(x+log(x)),f(x)=exp(x+(3*x+1))')disp(' w zadanym przez uzytkownika przedziale')disp(' ')disp(' < nacisnij dowolny klawisz >')pause

%wybieranie funkcji i przedzialuo=menu('wybierzfunkcje','f(x)=exp(x)','f(x)=exp(x+sin(x))','f(x)=exp(x+log(x))','f(x)=exp(x+(3*x+1))');disp(' ')min=input('Podaj poczatek przedzialu : ');max=input('Podaj koniec przedzialu : ');while max<=min disp(' Podaj wartosc wieksza niz poczatek przedzialu !') max=input('Podaj koniec przedzialu : ');endkrok=(max-min)/100;x=[min:krok:max];

%rysowanie wykresuclfif(o==1) y=exp(x); plot(x,y,'b-') title('Wykres funkcji f(x)=exp(x)')elseif(o==2) y=exp(x+sin(x)); plot(x,y,'m-') title('wykres funkcji f(x)=exp(x+sin(x))')elseif(o==3) y=exp(x+log(x)); plot(x,y,'r-') title('wykres funkcji f(x)=exp(x+log(x))')elseif(o==4) y=exp(x+(3*x+1)); plot(x,y,'g-') title('wykres funkcji f(x)=exp(x+(3*x+1))')endxlabel('x')ylabel('f(x)')grid

Page 21: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

21

text(x(1),y(1),num2str(y(1)))text(x(101),y(101),num2str(y(101)))

save wyniki.mat

• �������������������!����

*"����������#�� '�"�"�'������.%��!��� ( ) ( )( )exp sinf x x x= + w przedziale 0,5 0�-�#�!�

�����) #"'�,�'������,�#�� ) �� ���"(� ,%/

• ����������

%Program rysuje wykresy sil tnacych i momentow zginajacych%belki wolnopodpartej obciazonej sila skupiona%Dane do programu:% l - dlugosc belki% P - wartosc sily skupionej% x - odleglosc punktu przylozenia sily od lewej podporyclearclcdisp('Program rysuje wykresy sil tnacych i momentow zginajacychbelki wolnopodpartej')disp(' obciazonej sila skupiona przylozona w wybranympunkcie belki')

Page 22: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

22

disp(' ')

%wprowadzanie danychl=input('Podaj dlugosc belki wolnopodpartej l= ');while l<=0 disp(' !!! Dlugosc musi byc wartoscia dodatnia !!!') l=input('Podaj dlugosc belki wolnopodpartej l= ');endP=input('Podaj wartosc sily skupionej P= ');x=input('Podaj odleglosc punktu przylozenia sily od lewejpodpory belki x= ');while x<0 | x>l disp(' !!! Punkt przylozenia sily musi sie znajdowac nadlugosci belki !!!') x=input('Podaj odleglosc punktu przylozenia sily od lewejpodpory belki x= ');end

%obliczanie reakcjidisp(' ');disp('Reakcja na lewej podporze:');Ra=P*(l-x)/ldisp('Reakcja na prawej podporze:');Rb=P*x/l

%wartosci sil wewnetrznych w wybranych punktach belkidisp('Maksymalny moment zginajacy:')Mmax=P*x*(l-x)/li=[0 0 x x l l]';T=[0 Ra Ra -Rb -Rb 0]';M=[0 0 -Mmax -Mmax 0 0]';

%rysowanie wykresowclfsubplot(2,1,1)plot(i,T,'Color','red')line([0 l],[0 0],'Color','red')xlabel('Odleglosc')ylabel('Sila tnaca')subplot(2,1,2)plot(i,M,'Color','red')line([0 l],[0 0],'Color','red')xlabel('Odleglosc')ylabel('Moment zginajacy')text(x,-Mmax,num2str(Mmax))

save wyniki.mat

Page 23: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

23

• �������������������!����*"����������#�� '�"�"�'���������)����!�!+���,",���&'��(�� ��!�!+�#$ �-�$���'"$�"�"#� ����

"�#)%("�!��lE���"-!���"������)��PE?�����)"�"���'�"#$�()"�!��xE;�"#�$�'����"#�"��0�-�#�!������) #"'�,�'������,�#�� ) �� ���"(� ,%/

• ����������

%Program oblicza charakterystyki geometryczne i rysuje rdzenprzekroju teowego%Dane do programu:% h - wysokosc przekroju% b - szerokosc polki% t - grubosc srodnika% d - grubosc polkiclearclcdisp('Program rysuje rdzen przekroju teowego')

Page 24: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

24

disp(' ')

%wprowadzanie danychh=input('Podaj calkowita wysokosc przekroju h= ');while h<=0 disp(' Wysokosc musi byc wartoscia dodatnia!') h=input('Podaj calkowita wysokosc przekroju h= ');endb=input('Podaj szerokosc polki b= ');while b<=0 disp(' Szerokosc musi byc wartoscia dodatnia!') b=input('Podaj szerokosc polki b= ');endt=input('Podaj grubosc srodnika t= ');while t<=0 | t>=b disp(' Grubosc srodnika musi byc wartoscia dodatnia imniejsza od szerokosci polki!') t=input('Podaj grubosc srodnika t= ');endd=input('Podaj grubosc polki d= ');while d<=0 | d>=h disp(' Grubosc polki musi byc wartoscia dodatnia imniejsza od wysokosci przekroju!') d=input('Podaj grubosc polki d= ');end

%charakterystyki geometryczne przekrojudisp(' ')disp('Pole powierzchni:')A=b*d + (h-d)*tSx=b*d*d/2 + (h-d)*t*(d+(h-d)/2);disp('Odleglosc srodka ciezkosci od gory przekroju')yc=Sx/Adisp('Momenty bezwladnosci:')Ix=b*d^3/12 + b*d*(yc-d/2)*(yc-d/2) + t*(h-d)^3/12 + t*(h-d)*(d+(h-d)/2-yc)*(d+(h-d)/2-yc)Iy=d*b^3/12 + (h-d)*t^3/12disp('Kwadraty promieni bezwladnosci:')ix2=Ix/Aiy2=Iy/A

%obliczanie wierzcholkow rdzeniau(1)=0;v(1)=-ix2/yc;u(2)=-iy2/(b/2);v(2)=0;e=(h-d)/(t-b);

Page 25: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

25

x0=(yc+b*e-d)/(2*e);u(3)=-iy2/x0;y0=yc+b*e-d;v(3)=-ix2/y0;u(4)=0;v(4)=-ix2/-(h-yc);u(5)=-u(3);v(5)=v(3);u(6)=-u(2);v(6)=0;disp('Wspolrzedne wierzcholkow rdzenia w ukladzie przechodzacymprzez srodek ciezkosci przekroju :');[u' v']

%rysowanie przekroju i rdzeniaclfx=[-b/2 b/2 b/2 t/2 t/2 -t/2 -t/2 -b/2 -b/2];y=[yc yc yc-d yc-d yc-h yc-h yc-d yc-d yc];line(x,y,'Color','red');u(7)=u(1);v(7)=v(1);line(u,v,'LineWidth',2.5)line([-b/2 b/2],[0 0],'Color','green');line([0 0],[yc-h yc],'Color','green');

save wyniki.mat

• �������������������!����*"����������#�� '�"�"�!+ � �����������(�",����!���������%�����#���� �������"�%���"'�("�"

! )�"'�����'��"�"�!��hE�F0�����"�"�!���&)���bE�=0�(�%-"�!����"#��� �tE=���(�%-"�!���&)��dE?0�-�#�!�������) #"'�,�'������,�#�� ) �� ���"(� ,%/

Pole powierzchni:A = 120Odleglosc srodka ciezkosci od gory przekrojuyc = 6Momenty bezwladnosci:Ix = 2720Iy =

1250Kwadraty promieni bezwladnosci:ix2 =

22.6667

Page 26: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

26

iy2 = 10.4167

Wspolrzedne wierzcholkow rdzenia w ukladzie przechodzacym przezsrodek ciezkosci przekroju :ans =

0 -3.7778 -1.3889 0

-1.5625 1.4167 0 2.2667 1.5625 1.4167 1.3889 0

• ����������

%Program oblicza szybka transformate Fuoriera sygnalusinusoidalnego%o czestosci kolowej definiowanej przez uzytkownika.%Wykorzystuje sie funkcje fft.

Page 27: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

27

%Aby uzyskac dobre wyniki nalezy podzielic przedzial czasu%na duza liczbe punktow. W programie pokazano jak poprawnie%wyznaczyc os czestosci,oraz jak obliczyc amplitude sygnalu%uzywajac wyniku funkcji fft.

clear;clc;

f = input('Podaj czestotliwosc f: ');while f<=0 disp(' Podaj wartosc wieksza od zera !') f=input('Podaj czestotliwosc : ');end

am = input('Podaj amplitude sygnalu am : ');while am<=0 disp(' Podaj wartosc wieksza od zera !') am=input('Podaj amplitude sygnalu: ');end

tk = 1500;%definicja wektora czasudt=0.01;%definicja kroku czasowegot=(0:dt:tk);n_t=length(t);%wyznaczenie dlugosci wektora czasu

w = 2*pi*f;%obliczenie czestoscix = am*sin(w*t);%generacja sygnalu sinusoidalnego

%**************************************************************%obliczenia

fx = fft(x);%obliczenie szybkiej transformatyfx(1) = [];%usuniecie pierwszego elementu z wektora transf.nx = length(fx);base =inv(dt)*(0:(n_t/2-1))/n_t;%wyznaczenie osi czestotliwoscipowerx = abs(fx(1:nx/2));%wyznaczenie widmapowerxn = 2*powerx./nx;%normalizacja odpowiedzi

%**************************************************************%wydruk odpowiedzi

plot(base,powerxn);title(['Transformata Fouriera sygnalu sinusoidalnego oczestotliwosci f = 'num2str(f)...

Page 28: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

28

' i amplitudzie am = 'num2str(am)]);xlabel('czestotliwosc f');ylabel('znormalizowany modul wartosci wyjsciowych FFT');

• �������������������!����*"����������#�� '�"�"�'�������-�#�!�������) #"'�,�'������,�#�� ) �� ���"(� ,%/

• ���������"

%Program oblicza odpowiedz ukladu dynamicznego o jednym stopniu%swobody na trzy rozne przypadki obciazenia:%sinusoidalne, tzw "zeby pily" oraz impuls.%Uklad dynamiczny opisany jest liniowym rownaniem rozniczkowym%w postaci: x''+2*ksi*w*x'+w^2*x=F, gdzie w jest czestoscia%kolowa, ksi bezwymiarowym wsp.tlumienia a F obciazeniem.%Program wykorzystuje procedure lsim dostepna w toolboxie%Control.%Procedura wymaga przepisania rownania rozniczkowego rzedu%drugiego jako ukladu dwoch rownan rozniczkowych rzedu%pierwszego (x'=Ax+BF, y=Cx+Du).W analizowanym przypadku A jest

Page 29: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

29

%macierza 2x2, B jest wektorem o wymiarze 2x1, C jest wektorem%o wymiarze 1x2 a D jest wektorem 1x1. W programie macierze te%sa generowane jawnie.%Mozna jednak wygenerowac je automatycznie uzywajac funkcji%ord2 w postaci [a,b,c,d] = ord2(w,ksi) dostepnej w toolboxieControl.

clearclc%wybor funkcji obciazenia

o=menu('Wybierz funkcje obciazenia','Obciazenie F=sin(w*t)',... 'Obciazenie "zeby pily"','Obciazenie impulsem');

disp(' ')w=input('Podaj czestosc kolowa ukladu : ');ksi=input('Podaj wspolczynnik tlumienia : ');

while w<=0 disp(' Podaj wartosc wieksza od zera !') w=input('Podaj czestosc kolowa : ');end

dt = 0.1;% definicja kroku calkowaniaT = (0:dt:500);%definicja wektora czasuF = zeros(1,length(T));%inicjacja wektora obciazeniaX0 = [0 0]';%wektor warunkow poczatkowych

if (o==1)%generacja obciazenia sinusoidalnego F = sin(w*T);

elseif (o==2)%generacja obciazenia typu "zeby pily"

for i=0:4 for z=1:1000 F(z+i*1000)=0.001*z; end end

elseif (o==3)%w sekundzie dt*1000=100 uderzenie impulsem o%wart.1

F(1000)=1;end

%**************************************************************%generacja macierzy ukladu rownan

Page 30: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

30

a = [0 1;-w^2 -2*ksi*w];

b = [0 1]';

c = [1 0];

d = [0];

%**************************************************************%obliczenia

[Yrozw, Xrozw] = lsim(a,b,c,d,F,T,X0);

%**************************************************************%drukowanie odpowiedzifigure(1);plot(T,F);grid;title('Obciazenie');xlabel('czas [s]');ylabel('F');

figure(2);plot(T,Xrozw(:,1));grid;title('Przemieszczenie');xlabel('czas [s]');ylabel('x');

figure(3);plot(T,Xrozw(:,2));grid;title('Predkosc');xlabel('czas [s]');ylabel('v');

• �������������������!����*"����������#�� '�"�"�'�������-�#�!�������) #"'�,�'������,�#�� ) �� ���"(� ,%/

Page 31: MATLAB – PODSTAWY PROGRAMOWANIAcygnus.et.put.poznan.pl/~piotrw/dydaktyka/Kurs Matlab/Kurs Matlaba.pdf · MATLAB, prowadzonego w ramach przedmiotu podstawy informatyki. ... tablicowe,

31