یکی‌ از روش‌های رایج برای اطمینان از سلامت و رشد مناسب جنین در دوران بارداری بررسی‌ نوار قلب (ECG) جنین است. به دلیل خطرات زیاد در هنگام ضبط مستقیم نوار قلب از جنین (fetus) این روش در عمل مورد استفاده قرار نمی‌گیرد. روش جایگزین پردازش نوار قلب‌هایی‌ است که از نواحی سینه (thorax) و شکم (abdominal) مادر گرفته می‌‌شود. به دلیل ضربان‌های ضعیف جنین، نوار قلب مربوط به سینه تقریبا اثری از جنین در خود ندارد و تنها بازتاب ضربان قلب مادر و نویز اندازه گیری است. نوار قلب حاصل از ناحیه شکم نیز به طور غالب تحت تاثیر ضربان قلب مادر است و جنین تاثیر کمی‌ در این سیگنال دارد. اما با در دست داشتن هر دو نوار قلب می‌‌توان با حذف ضربان مادر از سیگنال ناحیه شکم، نوار قلب جنین را آشکار کرد. هدف از این پروژه استخراج نوار قلب جنین از نوار قلب‌های ناحیه سینه و شکم مادر است.

۱) ابتدا فایل ضمیمه را از اینجا download و unzip کنید.

۲) قسمت زیادی از کدهای MATLAB به صورت آماده در اختیار شما قرار گرفته اند. فایل اصلی‌ برای اجرا main.m است که در پوشه S&S MATLAB HW Package قرار دارد. اگر بدون تغییر، این فایل را توسط MATLAB اجرا کنید، با مشکل compile مواجه نخواهید شد و تعدادی فایل خروجی‌ در پوشه Figures ذخیره خواهد شد. طبیعتا، خروجی‌‌ها در این حالت نامطلوب هستند.

۳) پوشه Recordings شامل دو نوار قلب مذکور با نرخ نمونه برداری Fs=۱KHz است. با اجرا کردن فایل main.m نرم افزار MATLAB این سیگنال‌ها را خوانده و رسم می‌‌کند.

۴) با اجرای main.m نتایج مورد نظر این تمرین  به طور خودکار در پوشه Figures ذخیره و یا در محیط MATLAB چاپ می‌‌شوند.

۵) قسمت اصلی‌ پروژه ویرایش فایل‌های bandpass_filtering.m, coef_estimator.m, Fourier_Samples و Shift_Compensate واقع در پوشه Functions است (لطفا فایل‌های دیگر را تغییر ندهید):

  • تابع bandpass_filtering.m وظیفه پیاده سازی یک فیلتر فرکانس‌گزین باند میانی را به عهده دارد. این تابع سیگنال ورودی را به صورت گسسته در زمان و با نرخ نمونه برداری داده شده دریافت می‌‌کند و از فیلتر کردن آن خروجی را با همان نرخ نمونه برداری تولید می‌‌کند. پهنای عبور فیلتر (فرکانس قطع بالا و پائین) به عنوان ورودی به تابع اعمال می‌‌شود. هدف از اعمال این فیلتر حذف مؤلفه DC سیگنال به علاوه مؤلفه‌های فرکانس بالای نویز (مثلا برق شهر) است.
  • تابع Fourier_Samples برای محاسبه پاسخ فرکانسی یک سیگنال در فرکانس‌های مورد نظر فراخوانی می‌‌شود. بازه فرکانسی مورد نظر در فایل main.m تعیین شده است. لطفا این بازه را تغییر ندهید. محتوی تابع Fourier_Samples باید به نحوی ویرایش شده باشد که برای هر بازه فرکانسی محاسبات را انجام دهد (توجه: استفاده از تابع FFT به صورت سطحی به جواب نامطلوب منجر خواهد شد؛ در صورت عدم آشنائی با این تابع از آن استفاده نکنید).
  • تابع Shift_Compensate.m برای جبران شیفت زمانی‌ میان دو سیگنال مشابه استفاده می‌‌شود. در حقیقت، نوار قلب‌های ناحیه شکم و سینه به دلیل حضور غالب ضربان قلب مادر شباهت زیادی با یکدیگر دارند. اما به دلیل مجزا بودن دستگاه‌های ضبط، اختلاف زمانی‌ بین دو سیگنال ضبط شده وجود دارد. محتوی این تابع باید به گونه‌ای تغییر یابد که با دریافت دو سیگنال، ابتدا میزان شیفت تخمین زده شود و سپس تعدادی نمونه از هر سیگنال به صورتی‌ حذف گردد که دو سیگنال سنکرون شوند و کماکان طول برابری داشته باشند.
  • تابع coef_estimator.m برای تخمین میزان حضور ضربان قلب مادر در نوار قلب ناحیه شکم مورد استفاده قرار می‌گیرد. این تابع با دریافت دو نوار قلب (پس از پردازش‌های لازم) ضریب شباهت این دو سیگنال را تعیین می‌‌کند. به عبارت بهتر، به دنبال کاستن ضریبی از نوار قلب ناحیه سینه از نوار قلب ناحیه شکم هستیم به صورتی‌ که تاثیر ضربان قلب مادر از نوار قلب ناحیه شکم حذف گردد. نقش این تابع پیدا کردن ضریب مناسب است.

۶) با اجرای فایل main.m تمامی‌ مراحل لازم برای جداسازی نوار قلب جنین اجرا می‌‌شوند. در این حین، نرم افزار MATLAB تعدادی شکل رسم خواهد کرد که بخشی از آن‌ها به عنوان خروجی در پوشه Figures ذخیره خواهند شد و بخشی دیگر تنها برای بررسی‌ کیفیت بازسازی در مراحل مختلف مورد استفاده قرار میگیرند.

۷) فرکانس قطع بالای فیلتر میان گذر در حال حاضر مقدار fH=۴۰ تعیین شده است (خط ۷۱ در فایل main.m). با تغییر این پارامتر یکبار به fH=۱۰ و یکبار به fH=۵۰۰ مجددا main.m را اجرا کنید و نتایج نوار قلب جنین (و تخمین ضربان قلب که در command window نرم افزار چاپ می‌‌شود) را مقایسه کنید. دقت کنید که شکل‌های مربوط به نوار قلب جنین در پوشه Figures به صورت مجزا برای مقادیر مختلف fH ذخیره می‌‌شوند و همواره قابل مشاهده هستند. به ازای کدام مقدار fH تخمین ضربان قلب واقعی‌ تر است؟ دلیل این مشاهده را شرح دهید.

 ۸) پس از پیاده سازی و اجرای صحیح فایل در MATLAB, علاوه بر ارسال (کّل) پوشه، ضمیمه کردن یک گزارش متنی تایپ شده به فرمت pdf ضروری است. در فایل گزارش باید نحوه پیاده سازی ها و استدلالهای لازم شرح داده شوند. در نهایت، تمرین ارسالی‌ باید به صورت یک فایل zip شده شامل این گزارش باشد. لطفا نام فایل zip شده را ترکیب نام و شماره دانشجویی خود قرار دهید.

۹) این تمرین تنها از درگاه CW قابل ارسال است و موعد تحویل آن قابل تمدید نیست.

۱۰) این تمرین ۲ نمره از نمره نهایی درس را در بر می‌گیرد. در صورت مشاهده کپی‌ بین چند تمرین مختلف، نمره ۲- برای تمامی‌ افراد خاطی‌ لحاظ خواهد ش