Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ok-landscape
GitHub Repository: Ok-landscape/computational-pipeline
Path: blob/main/latex-templates/templates/biomedical/biosignal_processing.tex
51 views
unlisted
1
\documentclass[11pt,a4paper]{article}
2
\usepackage[utf8]{inputenc}
3
\usepackage[T1]{fontenc}
4
\usepackage{amsmath,amssymb}
5
\usepackage{graphicx}
6
\usepackage{booktabs}
7
\usepackage{siunitx}
8
\usepackage{geometry}
9
\geometry{margin=1in}
10
\usepackage{pythontex}
11
\usepackage{hyperref}
12
\usepackage{float}
13
14
\title{Biosignal Processing\\ECG and EEG Analysis}
15
\author{Biomedical Research Group}
16
\date{\today}
17
18
\begin{document}
19
\maketitle
20
21
\begin{abstract}
22
Signal processing techniques for biomedical signals including filtering and feature extraction.
23
\end{abstract}
24
25
\section{Introduction}
26
27
This report presents computational analysis of biosignal processing.
28
29
\begin{pycode}
30
31
import numpy as np
32
import matplotlib.pyplot as plt
33
from scipy.integrate import odeint
34
from scipy.signal import butter, filtfilt
35
plt.rcParams['text.usetex'] = True
36
plt.rcParams['font.family'] = 'serif'
37
38
\end{pycode}
39
40
\section{Mathematical Framework}
41
42
\begin{pycode}
43
# Generate sample data
44
x = np.linspace(0, 10, 100)
45
y = np.sin(x) * np.exp(-0.1*x)
46
47
fig, ax = plt.subplots(figsize=(10, 6))
48
ax.plot(x, y, 'b-', linewidth=2)
49
ax.set_xlabel('x')
50
ax.set_ylabel('y')
51
ax.set_title('Primary Analysis')
52
ax.grid(True, alpha=0.3)
53
plt.tight_layout()
54
plt.savefig('biosignal_processing_plot1.pdf', dpi=150, bbox_inches='tight')
55
plt.close()
56
\end{pycode}
57
58
\begin{figure}[H]
59
\centering
60
\includegraphics[width=0.85\textwidth]{biosignal_processing_plot1.pdf}
61
\caption{Primary analysis results.}
62
\end{figure}
63
64
\section{Secondary Analysis}
65
66
\begin{pycode}
67
# Secondary visualization
68
y2 = np.cos(x) * np.exp(-0.2*x)
69
y3 = x * np.exp(-0.3*x)
70
71
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
72
ax1.plot(x, y2, 'r-', linewidth=2)
73
ax1.set_xlabel('x')
74
ax1.set_ylabel('y')
75
ax1.set_title('Analysis A')
76
ax1.grid(True, alpha=0.3)
77
78
ax2.plot(x, y3, 'g-', linewidth=2)
79
ax2.set_xlabel('x')
80
ax2.set_ylabel('y')
81
ax2.set_title('Analysis B')
82
ax2.grid(True, alpha=0.3)
83
plt.tight_layout()
84
plt.savefig('biosignal_processing_plot2.pdf', dpi=150, bbox_inches='tight')
85
plt.close()
86
\end{pycode}
87
88
\begin{figure}[H]
89
\centering
90
\includegraphics[width=0.95\textwidth]{biosignal_processing_plot2.pdf}
91
\caption{Secondary analysis comparison.}
92
\end{figure}
93
94
\section{Parameter Study}
95
96
\begin{pycode}
97
# Parameter variation
98
params = [0.1, 0.3, 0.5, 0.7]
99
100
fig, ax = plt.subplots(figsize=(10, 6))
101
for p in params:
102
y_p = np.exp(-p * x) * np.sin(x)
103
ax.plot(x, y_p, linewidth=1.5, label=f'$\\alpha$ = {p}')
104
ax.set_xlabel('x')
105
ax.set_ylabel('y')
106
ax.set_title('Parameter Sensitivity')
107
ax.legend()
108
ax.grid(True, alpha=0.3)
109
plt.tight_layout()
110
plt.savefig('biosignal_processing_plot3.pdf', dpi=150, bbox_inches='tight')
111
plt.close()
112
\end{pycode}
113
114
\begin{figure}[H]
115
\centering
116
\includegraphics[width=0.85\textwidth]{biosignal_processing_plot3.pdf}
117
\caption{Parameter sensitivity analysis.}
118
\end{figure}
119
120
\section{2D Visualization}
121
122
\begin{pycode}
123
# 2D contour plot
124
X, Y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
125
Z = np.sin(np.sqrt(X**2 + Y**2))
126
127
fig, ax = plt.subplots(figsize=(10, 8))
128
cs = ax.contourf(X, Y, Z, levels=20, cmap='viridis')
129
plt.colorbar(cs)
130
ax.set_xlabel('x')
131
ax.set_ylabel('y')
132
ax.set_title('2D Field')
133
plt.tight_layout()
134
plt.savefig('biosignal_processing_plot4.pdf', dpi=150, bbox_inches='tight')
135
plt.close()
136
\end{pycode}
137
138
\begin{figure}[H]
139
\centering
140
\includegraphics[width=0.85\textwidth]{biosignal_processing_plot4.pdf}
141
\caption{Two-dimensional field visualization.}
142
\end{figure}
143
144
\section{Distribution Analysis}
145
146
\begin{pycode}
147
# Statistical distribution
148
np.random.seed(42)
149
data = np.random.normal(5, 1.5, 1000)
150
151
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
152
ax1.hist(data, bins=30, density=True, alpha=0.7, color='steelblue')
153
x_dist = np.linspace(0, 10, 100)
154
ax1.plot(x_dist, stats.norm.pdf(x_dist, 5, 1.5), 'r-', linewidth=2)
155
ax1.set_xlabel('Value')
156
ax1.set_ylabel('Density')
157
ax1.set_title('Distribution')
158
159
ax2.boxplot([data, np.random.normal(4, 2, 1000)])
160
ax2.set_xticklabels(['Dataset 1', 'Dataset 2'])
161
ax2.set_ylabel('Value')
162
ax2.set_title('Box Plot')
163
plt.tight_layout()
164
plt.savefig('biosignal_processing_plot5.pdf', dpi=150, bbox_inches='tight')
165
plt.close()
166
\end{pycode}
167
168
\begin{figure}[H]
169
\centering
170
\includegraphics[width=0.95\textwidth]{biosignal_processing_plot5.pdf}
171
\caption{Statistical distribution analysis.}
172
\end{figure}
173
174
\section{Time Series}
175
176
\begin{pycode}
177
t = np.linspace(0, 100, 1000)
178
signal = np.sin(0.5*t) + 0.5*np.sin(2*t) + 0.3*np.random.randn(len(t))
179
180
fig, ax = plt.subplots(figsize=(12, 5))
181
ax.plot(t, signal, 'b-', linewidth=0.5, alpha=0.7)
182
ax.set_xlabel('Time')
183
ax.set_ylabel('Signal')
184
ax.set_title('Time Series Data')
185
ax.grid(True, alpha=0.3)
186
plt.tight_layout()
187
plt.savefig('biosignal_processing_plot6.pdf', dpi=150, bbox_inches='tight')
188
plt.close()
189
\end{pycode}
190
191
\begin{figure}[H]
192
\centering
193
\includegraphics[width=0.95\textwidth]{biosignal_processing_plot6.pdf}
194
\caption{Time series visualization.}
195
\end{figure}
196
197
\section{Results Summary}
198
199
\begin{pycode}
200
results = [
201
['Parameter A', '3.14'],
202
['Parameter B', '2.71'],
203
['Parameter C', '1.41'],
204
]
205
206
print(r'\\begin{table}[H]')
207
print(r'\\centering')
208
print(r'\\caption{Computed Results}')
209
print(r'\\begin{tabular}{@{}lc@{}}')
210
print(r'\\toprule')
211
print(r'Parameter & Value \\\\')
212
print(r'\\midrule')
213
for row in results:
214
print(f"{row[0]} & {row[1]} \\\\\\\\")
215
print(r'\\bottomrule')
216
print(r'\\end{tabular}')
217
print(r'\\end{table}')
218
\end{pycode}
219
220
\section{Conclusions}
221
222
This analysis demonstrates the computational approach to biosignal processing.
223
224
\end{document}
225
226