آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

انواع_indexing_آرایه_در_پایتون_–_قسمت_دوم_آستانه‌گذاری_و_اشباع_سیگنال
11 بازدید
۱۴۰۴-۱۱-۱۲
6 دقیقه
  • نویسنده: Sepehr Kouzegaran
  • درباره نویسنده: ---

در قسمت قبل با انواع روش‌های indexing آرایه‌ها آشنا شدیم. در این قسمت از آموزش می‌خواهیم با استفاده از indexing آرایه نحوه آستانه‌گذاری یک سیگنال و به اشباع رفتن سیگنال (برش یا محدودکردن دامنه‌ی سیگنال) را شبیه‌سازی کنیم.

کدهای پایتون نوشته در این آموزش، در یک فایل ژوپیتر نوت‌بوک نوشته شده‌اند. لینک دانلود فایل ژوپیتر نوت‌بوک مربوط به این آموزش در انتهای صفحه قرار داده شده است.

برای تعریف آرایه‌ها کتابخانه numpy و برای ترسیم نمودار کتابخانه matplotlib را import می‌کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نرخ نمونه‌برداری را 1000 در نظر گرفته و در بازه 0 تا 1 ثانیه، یک سیگنال سینوسی با فرکانس 5 هرتز تعریف می‌کنیم. برای ساخت آرایه زمان (t) از arange استفاده کرده و از 0 تا 1 را با گام 1 بر Fs (دوره تناوب نمونه‌برداری) پیش می‌رویم. سپس در این نمونه‌های زمانی مقدار تابع سینوسی با فرکانس 5 هرتز را محاسبه می‌کنیم. در انتها با استفاده از plt.plot نمودار آن را رسم می‌کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار خروجی:

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

انتخاب بازه زمانی موردنظر از سیگنال

می‌خواهیم از سیگنال x که تعریف کردیم، بازه زمانی 300 تا 500 میلی‌ثانیه آن را انتخاب کنیم. برا این‌کار از روی آرایه t یک آرایه‌ی ماسک ایجاد می‌کنیم. از t زمان‌هایی که بزرگ‌تر از 300 میلی‌ثانیه هستند را انتخاب کرده و با زمان‌هایی که کمتر مساوی 500 میلی‌ثانیه هستند and می‌کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

در ماسک به‌دست‌آمده، در اندیس زمان‌های 300 تا 500 میلی‌ثانیه مقدار True و در بقیه اندیس‌ها مقدار False قرار می‌گیرد. از این آرایه استفاده کرده و بازه موردنظر از سیگنال x را به صورت x[mask] به‌دست می‌آوریم. زمان مربوط به این نمونه‌ها را نیز از آرایه t به‌دست آورده و در t2 ذخیره می‌کنیم. سپس نمودار x و x2 (بازه موردنظر از x) را در یک نمودار رسم می‌کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار خروجی:

 

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

می‌توان مشاهده کرد سیگنال در بازه‌ موردنظر به‌درستی انتخاب شده (منطبق بر سیگنال اصلی) و با رنگ قرمز ترسیم شده است.

آستانه‌گذاری (Thresholding)

می‌خواهیم سیگنال سینوسی که تعریف کردیم را آستانه‌گذاری کرده و مقادیر کمتر از 0.25 را انتخاب کنیم. نمودار سیگنال، آستانه و آرایه‌ی ماسک را ترسیم می‌کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار خروجی:

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

از روی نمودار می‌توان مشاهده کرد مقدار ماسک در جاهایی که سیگنال از آستانه کمتر است (در شرط آستانه‌گذاری که انجام دادیم صدق می‌کند) مقدار آن 1 و در بقیه ی جاها مقدار آن صفر می باشد.

مقادیری موجود در آرایه ماسک از نوع Boolean (True و False) می‌باشد. اگر مقدار True را به عدد صحیح (int) تبدیل کنیم مقدار 1 و معادل صحیح False هم صفر به دست می‌آید.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

به همین دلیل در نمودار ماسک رسم شده، جاهایی که مقدار آرایه ماسک True هست 1 و جاهایی که مقدار ماسک False هست صفر ترسیم شده است.

می‌توان از آرایه ماسک استفاده کرده و قسمت‌هایی از سیگنال که در شرط آستانه‌گذاری صدق می‌کنند را انتخاب کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

می‌توان مقادیر قسمت انتخاب شده از سیگنال را تغییر داد. آرایه x را کپی کرده و در y قرار می‌دهیم (می‌خواهیم تغییر را در y اعمال کرده و سپس نمودار x و y را رسم کنیم). با استفاده از آرایه ماسک قسمت موردنظر از y را انتخاب کرده و مقدار همه‌ مقادیر انتخاب شده را به صفر تغییر می‌دهیم (y[mask] = 0).

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار خروجی:

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

سیگنال مربعی متناوب با چرخه کاری 50 درصد

می‌توان از روی سیگنال سینوسی، سیگنال مربعی متناوب با چرخه کاری 50 درصد را تعریف کرد. برای اینکار ابتدا سیگنال سینوسی مورد نظر را با فرکانس مطلوب (فرکانس مورد نظر برای سیگنال مربعی) تعریف می کنیم. سپس سیگنال سینوسی را با مقدار صفر آستانه گذاری کرده و سیگنال مربعی را بدست می‌آوریم. به عبارت دیگر از آرایه‌ی Boolean بدست آمده به عنوان سیگنال مربعی استفاده می‌کنیم. می‌توانیم بعد از بدست آوردن آرایه‌ی Boolean، مقادیر آن را با استفاده از astype به نوع integer تبدیل کنیم.

در مثال زیر یک سیگنال مربعی با فرکانس 5 هرتز ایجاد می کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار خروجی:

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

سیگنال PWM با چرخه کاری مطلوب

برای تعریف سیگنال PWM با چرخه کاری مطلوب، آرایه‌ی زمان را تعریف کرده و مقدار باقی‌مانده‌ی مقادیر آرایه‌ی زمان را به دوره تناوب PWM موردنظر را حساب می‌کنیم و در آرایه‌ی cnt قرار می‌دهیم. سپس چرخه کاری موردنظر را به دوره تناوب PWM ضرب کرده و آرایه‌ی کمکی cnt که به دست آوردیم را با این مقدار آستانه‌گذاری می‌کنیم. سیگنال به‌دست‌آمده، پالس PWM با چرخه کاری موردنظر خواهد بود.

در مثال زیر پالس PWM با فرکانس 3 هرتز  و چرخه کاری 10 درصد ایجاد می کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار خروجی:

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

در مثال زیر پالس PWM با فرکانس 7 هرتز  و چرخه کاری 80 درصد ایجاد می کنیم.+

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار خروجی:

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

اشباع سیگنال (برش یا محدودکردن دامنه‌ی سیگنال)

می‌خواهیم با استفاده از آستانه‌گذاری به اشباع رفتن سیگنال را پیاده‌سازی کنیم. با این کار دامنه سیگنال را بین دو آستانه محدود می‌کنیم. ابتدا دو آستانه (آستانه‌ بالا و پایین) در نظر می‌گیریم. می‌خواهیم جاهایی که مقدار سیگنال از آستانه بالا بیشتر است مقدار سیگنال برابر با مقدار آستانه بالا شود و جاهایی که سیگنال از آستانه‌ی پایین کمتر هست مقدار سیگنال برابر با مقدار آستانه پایین شود. مقادیری از سیگنال که بین دو آستانه قرار دارد تغییر نمی‌کنند.

شاید برای شما مفید باشد:
آموزش میکروکنترلر Stm32f1 به صورت رجیستری : GPIO-ورودی

در مثال زیر مقدار آستانه‌ی بالا 0.75 و مقدار آستانه‌ی پایین -0.25 در نظر گرفته‌ شده است. برای هر آستانه ابتدا ماسک را به دست آورده و سپس آن قسمت از آرایه‌ی سیگنال را انتخاب می‌کنیم و مقدار آن‌ها را تغییر می‌دهیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار سیگنال ورودی و هر دو آرایه‌ی ماسک را به‌صورت زیر رسم می‌کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار خروجی:

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار سیگنال ورودی و سیگنال اشباع شده را به‌صورت زیر رسم می‌کنیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

نمودار خروجی:

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

می‌توان مشاهده کرده دامنه‌ی سیگنال خروجی (y) به بازه‌ی -0.5 تا 0.75 محدود شده است.

برای اشباع یک تابع به‌صورت زیر می‌نویسیم.

آموزش پردازش سیگنال با پایتون | آستانه‌گذاری، PWM و برش سیگنال (Clipping)

فایل کدهای این آموزش را می‌توانید از لینک گیت‌هاب زیر دانلود نمایید:

https://github.com/sphrk/array_indexing_examples_in_python

اطلاعات
11
0
0
اشتراک و حمایت
profile نویسنده: Sepehr Kouzegaran متخصص الکترونیک

ویراستار: مریم میریان
مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله