feat: added spd and sdm2
BIN
NotProgramming/SDM2/presentations/my_thesis/images/GameMaker.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 71 KiB |
BIN
NotProgramming/SDM2/presentations/my_thesis/images/RenPy.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
NotProgramming/SDM2/presentations/my_thesis/images/bad_fps.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 17 KiB |
BIN
NotProgramming/SDM2/presentations/my_thesis/images/fps_pick.png
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
NotProgramming/SDM2/presentations/my_thesis/images/godot.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 161 KiB |
|
After Width: | Height: | Size: 210 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 390 KiB |
|
After Width: | Height: | Size: 606 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
BIN
NotProgramming/SDM2/presentations/my_thesis/images/unity.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 148 KiB |
BIN
NotProgramming/SDM2/presentations/my_thesis/images/unreal.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 408 KiB |
|
After Width: | Height: | Size: 28 KiB |
BIN
NotProgramming/SDM2/presentations/my_thesis/main.pdf
Normal file
332
NotProgramming/SDM2/presentations/my_thesis/main.tex
Normal file
@ -0,0 +1,332 @@
|
||||
\documentclass{beamer}
|
||||
|
||||
\usepackage[fontsize=20pt]{fontsize}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{tikz}
|
||||
\usepackage{changepage} % Add to your preamble
|
||||
\usepackage{svg}
|
||||
\usepackage[polish]{babel}
|
||||
|
||||
|
||||
\graphicspath{ {./images/} }
|
||||
\usetheme{Warsaw}
|
||||
|
||||
|
||||
|
||||
%Information to be included in the title page:
|
||||
|
||||
% Custom title page layout adjustments
|
||||
\title{\large Porównanie wydajności i możliwości współczesnych silników do gier komputerowych}
|
||||
\author{Krzysztof Rudnicki}
|
||||
\institute{
|
||||
\textbf{Promotor} \\
|
||||
dr inż. Michał Chwesiuk
|
||||
}
|
||||
\date{\scriptsize \today} % Adjust the font size here
|
||||
|
||||
|
||||
\setbeamertemplate{footline}[frame number]{}
|
||||
\beamertemplatenavigationsymbolsempty
|
||||
\setbeamertemplate{headline}{}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{frame}
|
||||
\vspace{-0.5cm} % Adjust vertical space above title
|
||||
\maketitle
|
||||
% Alternatively, use a completely custom layout:
|
||||
%\begin{center}
|
||||
% {\Large\inserttitle\par}
|
||||
% \vskip1em
|
||||
% {\insertauthor\par}
|
||||
% \vskip1em
|
||||
% {\insertinstitute\par}
|
||||
% \vskip1em
|
||||
% {\insertdate\par}
|
||||
%\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Plan prezentacji}
|
||||
\tableofcontents
|
||||
\end{frame}
|
||||
|
||||
\section{Definicje}
|
||||
\begin{frame}
|
||||
\frametitle{Gra komputerowa}
|
||||
\large Aplikacja dostępna na platformie "Steam" oznaczona typem "Game"
|
||||
\end{frame}
|
||||
\begin{frame}
|
||||
\frametitle{Silnik do gier}
|
||||
\large Oprogramowanie zaprojektowane i stworzone do kreacji gier komputerowych
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Nowoczesne}
|
||||
\large Ponad 1000 gier w tej dekadzie na platformie "Steam"
|
||||
\end{frame}
|
||||
|
||||
|
||||
{
|
||||
\setbeamercolor{footline}{fg=white}
|
||||
\usebackgroundtemplate{\includegraphics[width=\paperwidth, height=\paperheight]{steamdb_main.png}}
|
||||
\begin{frame}
|
||||
\end{frame}
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
\usebackgroundtemplate{\includegraphics[width=\paperwidth, height=\paperheight]{steamdb_filter.drawio.pdf}}
|
||||
\begin{frame}
|
||||
\end{frame}
|
||||
}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Wybrane silniki - start}
|
||||
\begin{center}
|
||||
\includegraphics[width=0.8\paperwidth, height=0.8\paperheight]{usedEngines.pdf}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Wybrane silniki}
|
||||
\begin{itemize}
|
||||
\item Wyeliminowanie nie generycznych - Ren'Py, RPGMaker
|
||||
\item Wybór najpopularniejszych - Unity, Unreal
|
||||
% Prawie 25k i ponad 7.5k
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Wydajność silnika}
|
||||
\begin{itemize}
|
||||
\item Klatki na sekundę (FPS)
|
||||
\item Zużycie CPU, GPU, RAM i VRAM
|
||||
\item Liczba draw calls
|
||||
\item Czas ładowania assetów
|
||||
\item Czas odpowiedzi na interakcję gracza
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
\begin{frame}
|
||||
\frametitle{Możliwości Silnika}
|
||||
\begin{itemize}
|
||||
\item Renderowanie grafiki
|
||||
% Ray tracing, HDR lighting, dynamic shadows, particle systems, animacja
|
||||
\item Silnik Fizyczny
|
||||
\item Multiplatformowość (VR)
|
||||
% Linux, Windows, MacOS, Android, IOs, Xbox, PlayStation, Nintendo, VR
|
||||
\item Skryptowanie logiki gier (AI)
|
||||
\item Gry online
|
||||
\item Sklepy z assetami
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
\section{Narzędzia}
|
||||
\frametitle{Unity Profiler}
|
||||
{
|
||||
\setbeamercolor{footline}{fg=white}
|
||||
\usebackgroundtemplate{
|
||||
\includegraphics[width=\paperwidth, height=\paperheight]
|
||||
{unity_profiler.png}}
|
||||
\begin{frame}
|
||||
\end{frame}
|
||||
}
|
||||
|
||||
\frametitle{Unreal Profiler}
|
||||
{
|
||||
\setbeamercolor{footline}{fg=white}
|
||||
\usebackgroundtemplate{
|
||||
\includegraphics[width=\paperwidth, height=\paperheight]
|
||||
{unreal_profiler.jpg}}
|
||||
\begin{frame}
|
||||
\end{frame}
|
||||
}
|
||||
|
||||
\frametitle{Nvidia nsight}
|
||||
{
|
||||
\setbeamercolor{footline}{fg=white}
|
||||
\usebackgroundtemplate{
|
||||
\includegraphics[width=\paperwidth, height=\paperheight]
|
||||
{nvida_nsighty.jpg}}
|
||||
\begin{frame}
|
||||
\end{frame}
|
||||
}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Nsight - Analiza FPS}
|
||||
\center
|
||||
\includegraphics[width=1\textwidth]{fps_overview.png}
|
||||
% Ile klatek pokazaliśmy na ile
|
||||
% ile trwała średnio klatka
|
||||
% Ile trwała najkrótsza klatka
|
||||
% Ile trwała najdłuższa klatka
|
||||
% Przeciętne klatki na sekundę dla pokazanego wycinka
|
||||
% Tyle lub mniej czasu trwało 99% klatek
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Nsight - Analiza FPS}
|
||||
\center
|
||||
\includegraphics[width=1\textwidth]{stutter_row.png}
|
||||
% Wykrywanie "zawieszek"
|
||||
% Wykrywamy klatki których długość
|
||||
% jest znacznie dłuższa od długości mediany pobliskich 19 klatek
|
||||
% zawieszka musi być dłuższa niż 4 milisekundy
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Nsight - Analiza FPS}
|
||||
\center
|
||||
\includegraphics[width=1\textwidth]{dx12_frame_health.png}
|
||||
% Możemy sprawdzić jaka klatka miała zawieszkę
|
||||
% I jaka metoda w api tę zawieszkę spowodowała
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Nsight - Zużycie VRAM}
|
||||
\center
|
||||
\includegraphics[width=1\textwidth]{memory_utilization_gpu_vram.png}
|
||||
% Zielony -> ile pamięci mamy dostępnej
|
||||
% Pomarańczowy -> ile pamięci zużyliśmy
|
||||
% VidMm Device Suspension -> okresy czasku kiedy przetransferowano
|
||||
% Jeden duży zasób pamięci
|
||||
% Demoted Memory -> w GPU mamy local memory (szybsze) i global memory
|
||||
% (wolniejsze) to może nam mówić o "wyciekach" pamięci
|
||||
% źle zooptymalizowanej pamięci itd.
|
||||
% Allokacja pamięci -> zielone aplikacja, szare -> system
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Nsight - Zużycie VRAM}
|
||||
\center
|
||||
\includegraphics[width=1\textwidth]{memory_utilization_resource_migrations.png}
|
||||
% W kolejności co najwięcej zużyło zasobów
|
||||
% Konkretnie ile i kiedy
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Nsight - Zużycie VRAM}
|
||||
\center
|
||||
\includegraphics[width=1\textwidth]{memory_utilization_memory_transfer.png}
|
||||
% W kolejności co najwięcej zużyło zasobów
|
||||
% Konkretnie ile i kiedy
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Jak porównywać?}
|
||||
\begin{itemize}
|
||||
\item Stworzenie gry na obu
|
||||
\item Porównywanie istniejących gier
|
||||
\item Porównanie samych edytorów
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
{
|
||||
\setbeamercolor{footline}{fg=white}
|
||||
\usebackgroundtemplate{
|
||||
\includegraphics[width=\paperwidth, height=\paperheight]
|
||||
{maxresdefault (1).jpg}}
|
||||
\begin{frame}
|
||||
\end{frame}
|
||||
}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Wybór gatunku}
|
||||
FPS:
|
||||
\begin{itemize}
|
||||
\item Wystarczająco skomplikowany
|
||||
\item Grafika
|
||||
\item Fizyka
|
||||
\item Klasyczny benchmark
|
||||
% Wolfenstein, Doom, Quake, Crysis
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
\begin{frame}
|
||||
\frametitle{Problem}
|
||||
Inklinacja Silnika \\
|
||||
\begin{itemize}
|
||||
\item $ \frac{2478}{39713} \approx 6\% $ gier Unity to FPS \\
|
||||
\item $ \frac{1765}{11158} \approx 15\% $ gier Unreal to FPS \\
|
||||
\end{itemize}
|
||||
Źródło: steamdb.info
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Wybór gatunku}
|
||||
Bullet hell:
|
||||
\begin{itemize}
|
||||
\item Wystarczająco skomplikowany
|
||||
\item Grafika
|
||||
\item Czas jest ważny
|
||||
% W Bullet hell czas jest ważny, gra musi być płynna
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
{
|
||||
\setbeamercolor{footline}{fg=white}
|
||||
\usebackgroundtemplate{
|
||||
\includegraphics[width=\paperwidth, height=\paperheight]
|
||||
{maxresdefault.jpg}}
|
||||
\begin{frame}
|
||||
\end{frame}
|
||||
}
|
||||
\begin{frame}
|
||||
\frametitle{Wyzwania}
|
||||
\begin{itemize}
|
||||
\item Sprzęt
|
||||
% Ten sam, jeden i ten sam komputer użyty w procesie kreacji obu
|
||||
\item Umiejętności
|
||||
% Nie mam
|
||||
\item Podobne wersje silnika
|
||||
% Użyje ostatniego LTS
|
||||
\item Inklinacja Silnika \\ (3\% Unity, 2.4\% Unreal)
|
||||
% ??? Ch
|
||||
% 1577 FPS UNITY, 271 FPS UNREAL
|
||||
% 39713 Total Unity, 11158 Total Unreal (proporcjonalnie 2 razy więcej :<)
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Ocena łatwości użycia}
|
||||
\begin{itemize}
|
||||
\item Dokumentacja
|
||||
\item Intuicyjność
|
||||
\item Materiały
|
||||
\item Zasoby (Assety)
|
||||
\item Dostępne funkcje
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Po stworzeniu}
|
||||
Przejść obie gry, monitorując przy użyciu Nvidia Nsight i porównać wyniki
|
||||
\end{frame}
|
||||
|
||||
|
||||
\section{Źródła}
|
||||
\begin{frame}
|
||||
\frametitle{Źródła}
|
||||
\begin{itemize}
|
||||
\item \href{https://steamdb.info/}{https://steamdb.info/}
|
||||
\item \href{https://docs.nvidia.com/nsight-systems}{https://docs.nvidia.com/nsight-systems}
|
||||
\item An Overview Study of Game Engines, Faizi Noor Ahmad
|
||||
\item Game Engine Architecture, Jason Gregory
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Źródła obrazów}
|
||||
\begin{itemize}
|
||||
\item Crysis - kanał youtube \href{https://www.youtube.com/watch?v=vGjOALIrL_U}{Thronefull}
|
||||
\item BulletHell - kanał youtube \href{https://www.youtube.com/watch?app=desktop&v=h-wr6LoETA0}{Beat that boss}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\end{document}
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 12 KiB |
15
NotProgramming/SDM2/presentations/my_thesis/script.txt
Normal file
@ -0,0 +1,15 @@
|
||||
Dzień dobry państwu, nazywam się Krzysztof Rudnicki i chciałbym opowiedzieć o mojej pracy magisterskiej pod promotorstwem Pana doktora Michała Chwesiuka, o tytule Porównanie wydajnośći i możliwości współczesnych silników gier komputerowych
|
||||
|
||||
Jeżeli pojawią się jakieś pytania to można je jak najbardziej zadawać w trakcie
|
||||
|
||||
Plan prezentacji wygląda następująco, najpierw omówię krótko co
|
||||
rozumiem pod pojęciem silnika do gier,
|
||||
jakie są współczesne silniki do gier,
|
||||
które z nich będę porównywał,
|
||||
czym są możliwości i wydajności tych silników
|
||||
i jak zamierzam je porównywać
|
||||
|
||||
Chciałbym aby po tej prezentacji wiedzieli Państwo więcej o tym jak można
|
||||
porównywać silniki graficzne niż przed nią
|
||||
|
||||
|
||||
15
NotProgramming/SPD/lab2_spd/lab2.drawio
Normal file
@ -0,0 +1,15 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" version="26.0.6">
|
||||
<diagram name="Page-1" id="2vE6dni7qVpCWZpP-CNm">
|
||||
<mxGraphModel dx="983" dy="1268" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<UserObject label="<b style="font-weight:normal;" id="docs-internal-guid-ff2c5e07-7fff-3fae-fed4-b0fa37caed6b"><span style="font-size:20pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="border:none;display:inline-block;overflow:hidden;width:624px;height:432px;"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd6iwCGetaFN00emJRvhzG8WmA_Y3vEveyXiAYYBNjk4vUl1OXIgBGd_od5nMTBzg6CVQFR43BRpWswvvDkyARfb-LE6e-OWbQdNa2YtGMkcWp1KjTEYvVhynCBW6VwtiN78eRRKA?key=UzfVxNH8I7wCxe0FnKorOi_b" width="624" height="432" style="margin-left:0px;margin-top:0px;"></span></span></b>" link="<b style="font-weight:normal;" id="docs-internal-guid-ff2c5e07-7fff-3fae-fed4-b0fa37caed6b"><span style="font-size:20pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><span style="border:none;display:inline-block;overflow:hidden;width:624px;height:432px;"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd6iwCGetaFN00emJRvhzG8WmA_Y3vEveyXiAYYBNjk4vUl1OXIgBGd_od5nMTBzg6CVQFR43BRpWswvvDkyARfb-LE6e-OWbQdNa2YtGMkcWp1KjTEYvVhynCBW6VwtiN78eRRKA?key=UzfVxNH8I7wCxe0FnKorOi_b" width="624" height="432" style="margin-left:0px;margin-top:0px;"></span></span></b>" id="PGaHsMgPPGA8kvKqBguw-1">
|
||||
<mxCell style="text;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="90" y="530" width="560" height="460" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
1
NotProgramming/SPD/lab2_spd/lab2_1.drawio
Normal file
@ -0,0 +1 @@
|
||||
<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>
|
||||
40
NotProgramming/SPD/lab2_spd/lab2_2.drawio
Normal file
37
NotProgramming/SPD/lab2_spd/lab2_3.drawio
Normal file
34
NotProgramming/SPD/lab2_spd/lab4
Normal file
128
NotProgramming/SPD/lab4_spd/main.py
Normal file
@ -0,0 +1,128 @@
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Prepare the datasets
|
||||
datasets_200Hz = []
|
||||
datasets_400Hz = []
|
||||
|
||||
# Dataset 1: Wieloton 200 Hz, 7 (1400 Hz), 3 składowe
|
||||
# Starting x value is 1400 Hz
|
||||
datasets_200Hz.append({
|
||||
'name': '200 Hz, 7 (1400 Hz), 3 składowe',
|
||||
'x': [1400 + 0, 1400 + 50, 1400 + 100, 1400 + 150],
|
||||
'y': [200, 200, 215, 230]
|
||||
})
|
||||
|
||||
# Dataset 2: Wieloton 200 Hz, 7 (1400 Hz), 7 składowych
|
||||
datasets_200Hz.append({
|
||||
'name': '200 Hz, 7 (1400 Hz), 7 składowych',
|
||||
'x': [1400 + 0, 1400 + 50, 1400 + 100, 1400 + 150],
|
||||
'y': [190, 190, 200, 195]
|
||||
})
|
||||
|
||||
# Dataset 3: Wieloton 200 Hz, 10 (2000 Hz), 3 składowe
|
||||
# Starting x value is 2000 Hz
|
||||
datasets_200Hz.append({
|
||||
'name': '200 Hz, 10 (2000 Hz), 3 składowe',
|
||||
'x': [2000 + 0, 2000 + 50, 2000 + 100, 2000 + 150],
|
||||
'y': [225, 215, 220, 265]
|
||||
})
|
||||
|
||||
# Dataset 4: Wieloton 200 Hz, 10 (2000 Hz), 7 składowych
|
||||
datasets_200Hz.append({
|
||||
'name': '200 Hz, 10 (2000 Hz), 7 składowych',
|
||||
'x': [2000 + 0, 2000 + 50, 2000 + 100, 2000 + 150],
|
||||
'y': [190, 205, 205, 210]
|
||||
})
|
||||
|
||||
# Dataset 4: Wieloton 200 Hz, 10 (2000 Hz), 7 składowych
|
||||
datasets_200Hz.append({
|
||||
'name': 'Shouten - 7',
|
||||
'x': [1400 + 0, 1400 + 50, 1400 + 100, 1400 + 150],
|
||||
'y': [200, 207.5, 214, 222]
|
||||
})
|
||||
|
||||
# Dataset 4: Wieloton 200 Hz, 10 (2000 Hz), 7 składowych
|
||||
datasets_200Hz.append({
|
||||
'name': 'Shouten - 10',
|
||||
'x': [2000 + 0, 2000 + 50, 2000 + 100, 2000 + 150],
|
||||
'y': [200, 205, 210, 215]
|
||||
})
|
||||
|
||||
|
||||
|
||||
# Dataset 5: Wieloton 400 Hz, 7 (2800 Hz), 3 składowe
|
||||
# Starting x value is 2800 Hz
|
||||
datasets_400Hz.append({
|
||||
'name': '400 Hz, 7 (2800 Hz), 3 składowe',
|
||||
'x': [2800 + 0, 2800 + 100, 2800 + 200, 2800 + 300],
|
||||
'y': [405, 410, 410, 405]
|
||||
})
|
||||
|
||||
# Dataset 6: Wieloton 400 Hz, 7 (2800 Hz), 7 składowych
|
||||
datasets_400Hz.append({
|
||||
'name': '400 Hz, 7 (2800 Hz), 7 składowych',
|
||||
'x': [2800 + 0, 2800 + 100, 2800 + 200, 2800 + 300],
|
||||
'y': [410, 420, 420, 425]
|
||||
})
|
||||
|
||||
# Dataset 7: Wieloton 400 Hz, 10 (4000 Hz), 3 składowe
|
||||
# Starting x value is 4000 Hz
|
||||
datasets_400Hz.append({
|
||||
'name': '400 Hz, 10 (4000 Hz), 3 składowe',
|
||||
'x': [4000 + 0, 4000 + 100, 4000 + 200, 4000 + 300],
|
||||
'y': [407, 419, 425, 425]
|
||||
})
|
||||
|
||||
# Dataset 8: Wieloton 400 Hz, 10 (4000 Hz), 7 składowych
|
||||
# Note: The last two 'Wynik [Hz]' values seem inconsistent.
|
||||
# They are much lower than expected based on prior values.
|
||||
# Assuming there might be typos, and they should be 2200 and 2400
|
||||
# instead of 220 and 240.
|
||||
datasets_400Hz.append({
|
||||
'name': '400 Hz, 10 (4000 Hz), 7 składowych',
|
||||
'x': [4000 + 0, 4000 + 100, 4000 + 200, 4000 + 300],
|
||||
'y': [405, 410, 415, 415] # Original data
|
||||
})
|
||||
|
||||
datasets_400Hz.append({
|
||||
'name': 'Shouten - 7',
|
||||
'x': [2800 + 0, 2800 + 100, 2800 + 200, 2800 + 300],
|
||||
'y': [400, 414, 428, 443]
|
||||
})
|
||||
|
||||
|
||||
datasets_400Hz.append({
|
||||
'name': 'Shouten - 10',
|
||||
'x': [4000 + 0, 4000 + 100, 4000 + 200, 4000 + 300],
|
||||
'y': [400, 410, 420, 430] # Original data
|
||||
})
|
||||
|
||||
# Plot the data for 200 Hz
|
||||
plt.figure(figsize=(12, 8))
|
||||
for dataset in datasets_200Hz:
|
||||
if 'Shouten' in dataset['name']:
|
||||
plt.plot(dataset['x'], dataset['y'], marker='s', color='red', label=dataset['name']) # Shouten datasets
|
||||
else:
|
||||
plt.plot(dataset['x'], dataset['y'], marker='o', label=dataset['name']) # Other datasets
|
||||
plt.xlabel('Frequency [Hz]')
|
||||
plt.ylabel('Result [Hz]')
|
||||
plt.title('Combined Graph of Results for 200 Hz')
|
||||
plt.legend()
|
||||
plt.grid(True)
|
||||
plt.savefig('results_200Hz.png') # Save the plot
|
||||
plt.show()
|
||||
|
||||
# Plot the data for 400 Hz
|
||||
plt.figure(figsize=(12, 8))
|
||||
for dataset in datasets_400Hz:
|
||||
if 'Shouten' in dataset['name']:
|
||||
plt.plot(dataset['x'], dataset['y'], marker='s', color='red', label=dataset['name']) # Shouten datasets
|
||||
else:
|
||||
plt.plot(dataset['x'], dataset['y'], marker='o', label=dataset['name']) # Other datasets
|
||||
plt.xlabel('Frequency [Hz]')
|
||||
plt.ylabel('Result [Hz]')
|
||||
plt.title('Combined Graph of Results for 400 Hz')
|
||||
plt.legend()
|
||||
plt.grid(True)
|
||||
plt.savefig('results_400Hz.png') # Save the plot
|
||||
plt.show()
|
||||
BIN
NotProgramming/SPD/lab4_spd/results_200Hz.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
NotProgramming/SPD/lab4_spd/results_400Hz.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
NotProgramming/SPD/spd3/cw1.png
Normal file
|
After Width: | Height: | Size: 135 KiB |
136
NotProgramming/SPD/spd3/main.py
Normal file
@ -0,0 +1,136 @@
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Values 1
|
||||
x1 = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
|
||||
y1 = [33.2, 35.48, 27.67, 19.41, 15.3, 15.44, 13.59]
|
||||
|
||||
# Values 2
|
||||
x2 = [0.4, 0.5, 0.6, 0.7]
|
||||
y2 = [13.29, 11.25, 12.55, 13.26]
|
||||
|
||||
# Values 3
|
||||
x3 = [0.4, 0.5, 0.6, 0.7]
|
||||
y3 = [22.06, 15.48, 18.74, 17.71]
|
||||
|
||||
# Create the plot
|
||||
plt.figure(figsize=(10, 6))
|
||||
|
||||
# Plot each line with different styles
|
||||
plt.plot(x1, y1, marker='o', linestyle='-', color='blue', label='symetrycznie 500 Hz')
|
||||
plt.plot(x2, y2, marker='s', linestyle='--', color='green', label='asymetrycznie 550 Hz')
|
||||
plt.plot(x3, y3, marker='^', linestyle='-.', color='red', label='asymetrycznie 450 Hz')
|
||||
|
||||
# Add labels and title
|
||||
plt.xlabel('parametr g', fontsize=40)
|
||||
plt.ylabel('Prod detekcji syngalu [dB]', fontsize=40)
|
||||
plt.title('500 Hz', fontsize=48)
|
||||
|
||||
# Add a legend
|
||||
plt.legend(fontsize=32)
|
||||
|
||||
# Optional: Add gridlines
|
||||
plt.grid(True)
|
||||
plt.xticks(fontsize=32)
|
||||
plt.yticks(fontsize=32)
|
||||
|
||||
# Display the plot
|
||||
plt.show()
|
||||
|
||||
# Values 1
|
||||
x1 = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
|
||||
y1 = [33.06, 35.28, 23.33, 17.14, 14.33, 10.01, 4.43]
|
||||
|
||||
# Values 2
|
||||
x2 = [0.4, 0.5, 0.6, 0.7]
|
||||
y2 = [15.22, 8.16, 6.45, 6.27]
|
||||
|
||||
# Values 3
|
||||
x3 = [0.4, 0.5, 0.6, 0.7]
|
||||
y3 = [13.0, 13.06, 7.8, 1.7]
|
||||
|
||||
# Create the plot
|
||||
plt.figure(figsize=(10, 6))
|
||||
|
||||
# Plot each line with different styles
|
||||
plt.plot(x1, y1, marker='o', linestyle='-', color='blue', label='symetrycznie 1500 Hz')
|
||||
plt.plot(x2, y2, marker='s', linestyle='--', color='green', label='asymetrycznie 1650 Hz')
|
||||
plt.plot(x3, y3, marker='^', linestyle='-.', color='red', label='asymetrycznie 1350 Hz')
|
||||
|
||||
# Add labels and title
|
||||
plt.xlabel('parametr g', fontsize=40)
|
||||
plt.ylabel('Prod detekcji syngalu [dB]', fontsize=40)
|
||||
plt.title('1500 Hz', fontsize=48)
|
||||
|
||||
# Add a legend
|
||||
plt.legend(fontsize=32)
|
||||
|
||||
# Optional: Add gridlines
|
||||
plt.grid(True)
|
||||
plt.xticks(fontsize=32)
|
||||
plt.yticks(fontsize=32)
|
||||
|
||||
# Display the plot
|
||||
plt.show()
|
||||
|
||||
# Values 1
|
||||
x1 = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
|
||||
y1 = [33.2, 35.48, 27.67, 19.41, 15.3, 15.44, 13.59]
|
||||
|
||||
# Values 2
|
||||
x2 = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
|
||||
y2 = [33.06, 35.28, 23.33, 17.14, 14.33, 10.01, 4.43]
|
||||
|
||||
# Create the plot
|
||||
plt.figure(figsize=(10, 6))
|
||||
|
||||
# Plot each line with different styles
|
||||
plt.plot(x1, y1, marker='o', linestyle='-', color='blue', label='symetrycznie 500 Hz')
|
||||
plt.plot(x2, y2, marker='s', linestyle='--', color='green', label='symetrycznie 1500 Hz')
|
||||
|
||||
# Add labels and title
|
||||
plt.xlabel('parametr g', fontsize=40)
|
||||
plt.ylabel('Prod detekcji syngalu [dB]', fontsize=40)
|
||||
plt.title('500 Hz vs 1500 Hz', fontsize=48)
|
||||
|
||||
# Add a legend
|
||||
plt.legend(fontsize=32)
|
||||
|
||||
# Optional: Add gridlines
|
||||
plt.grid(True)
|
||||
plt.xticks(fontsize=32)
|
||||
plt.yticks(fontsize=32)
|
||||
|
||||
# Display the plot
|
||||
plt.show()
|
||||
|
||||
# Values 1
|
||||
x1 = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
|
||||
y1 = [33.2, 35.48, 27.67, 19.41, 15.3, 15.44, 13.59]
|
||||
|
||||
# Values 2
|
||||
x2 = [0.005, 0.01, 0.02, 0.05, 0.1, 0.3]
|
||||
y2 = [81.59, 60.08, 68.48, 58.77, 53.6, 55.46]
|
||||
|
||||
# Create the plot
|
||||
plt.figure(figsize=(10, 6))
|
||||
|
||||
# Plot each line with different styles
|
||||
plt.plot(x1, y1, marker='o', linestyle='-', color='blue', label='pasmowy 500 Hz')
|
||||
plt.plot(x2, y2, marker='s', linestyle='--', color='green', label='pasmowo-zaporowy 500 Hz')
|
||||
|
||||
# Add labels and title
|
||||
plt.xlabel('parametr g', fontsize=40)
|
||||
plt.ylabel('Prod detekcji syngalu [dB]', fontsize=40)
|
||||
plt.title('Porownanie szum pasmowy vs szum pasmowo zaporowy dla 500 Hz', fontsize=48)
|
||||
|
||||
# Add a legend
|
||||
plt.legend(fontsize=32)
|
||||
|
||||
# Optional: Add gridlines
|
||||
plt.grid(True)
|
||||
plt.xticks(fontsize=32)
|
||||
plt.yticks(fontsize=32)
|
||||
|
||||
# Display the plot
|
||||
plt.show()
|
||||
|
||||
BIN
NotProgramming/SPD/spd_5/gco.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
NotProgramming/SPD/spd_5/lab5.png
Normal file
|
After Width: | Height: | Size: 204 KiB |
42
NotProgramming/SPD/spd_5/main.py
Normal file
@ -0,0 +1,42 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
# Data
|
||||
delta_t = np.array([500, 200, 100, 50, 20, 10, 5, 3])
|
||||
ton_60_db = [60, 60, 59, 58, 50, 46, 42, 39]
|
||||
szum_20_db_per_hz = [20, 19, 18, 16, 12, 11, 8, 8]
|
||||
ton_60_db_minus = [ton - 60 for ton in ton_60_db]
|
||||
szum_20_db_per_hz_minus = [szum - 20 for szum in szum_20_db_per_hz]
|
||||
|
||||
# Theoretical lines
|
||||
delta_t_line = np.logspace(np.log10(3), np.log10(500), 100)
|
||||
log_delta_t_line = np.log10(delta_t_line)
|
||||
|
||||
# Equations in terms of log(delta_t)
|
||||
# For Broadband Noise: y = 10 * log10(delta_t) - 25
|
||||
y_broadband_line = 10 * log_delta_t_line - 25
|
||||
|
||||
# For Pure Tone: y = 9 * log10(delta_t) - 19
|
||||
y_pure_tone_line = 9 * log_delta_t_line - 19
|
||||
|
||||
# Plotting
|
||||
plt.figure(figsize=(10, 6))
|
||||
|
||||
# Plot the experimental data
|
||||
plt.semilogx(delta_t, ton_60_db_minus, 'o', label='Ton eksperymentalny 60 dB')
|
||||
plt.semilogx(delta_t, szum_20_db_per_hz_minus, 's', label='Szum eksperymentalny 20 dB/Hz')
|
||||
|
||||
# Plot the theoretical lines
|
||||
plt.semilogx(delta_t_line, y_pure_tone_line, label='Ton - krzywa teoretyczna')
|
||||
plt.semilogx(delta_t_line, y_broadband_line, label='Szum - krzywa teoereyczna')
|
||||
|
||||
plt.xlabel('Czas trwania sygnału [ms]', fontsize=40)
|
||||
plt.ylabel('Poziom względny głośności [dB]', fontsize=40)
|
||||
plt.title('Głośnośc vs czas', fontsize=48)
|
||||
plt.legend(fontsize=32)
|
||||
plt.grid(True, which="both", ls="--")
|
||||
|
||||
plt.xticks(fontsize=32)
|
||||
plt.yticks(fontsize=32)
|
||||
|
||||
plt.show()
|
||||
24
NotProgramming/SPD/spd_5/main2.py
Normal file
@ -0,0 +1,24 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
# Data (decreasing values)
|
||||
bandwidth = np.array([40, 100, 160, 300, 600, 1000])
|
||||
detection_threshold_600Hz = np.array([50, 30, 20, 12, 10, 8])
|
||||
detection_threshold_2200Hz = np.array([40, 25, 18, 10, 8, 7])
|
||||
detection_threshold_4400Hz = np.array([35, 22, 15, 9, 7, 6])
|
||||
|
||||
# Plot
|
||||
plt.figure(figsize=(10, 6))
|
||||
plt.xscale('log')
|
||||
|
||||
plt.scatter(bandwidth, detection_threshold_600Hz, label='600 Hz', marker='o')
|
||||
plt.scatter(bandwidth, detection_threshold_2200Hz, label='2200 Hz', marker='^')
|
||||
plt.scatter(bandwidth, detection_threshold_4400Hz, label='4400 Hz', marker='s')
|
||||
|
||||
plt.xlabel('Szerokość pasma [Hz]')
|
||||
plt.ylabel('Próg detekcji interwału ciszy [ms]')
|
||||
plt.title('Górna częstotliwość odcięcia (GCO)')
|
||||
plt.legend(title='GCO')
|
||||
|
||||
plt.grid(True)
|
||||
plt.show()
|
||||
43
NotProgramming/SPD/spd_5/zad2.drawio
Normal file
1
NotProgramming/SPD/spd_5/zad3.drawio
Normal file
@ -0,0 +1 @@
|
||||
<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>
|
||||