٪ تحديد إشارة الإدخال
ر = 0: 2 * بي / 100: 2 * بي ؛
أ = 10 ؛
x = A * sin (t) ؛
٪ رسم الإشارة الأصلية
قطعة أرض (x)
يتمسك
٪ استدعاء دالة تعديل دلتا التكيفية
ADMout = adeltamod (x، 1، 0.1،0.3) ؛
مؤامرة (ADMout) ؛
٪ عمل Advanced Delta Modulator مشابه للعمل العادي
٪ دلتا المغير. الفرق الوحيد هو أن خطوة السعة
حجم٪ متغير ويستمر في التضاعف إذا كان الناتج / المخرجات السابقة
٪ لا يبدو أنهم "يلحقون" بإشارة الإدخال. هذه المشكلة
يشار إلى٪ باسم "المنحدر الزائد" في الكتب المدرسية.
الوظيفة [ADMout] = adeltamod (sig_in، Delta، td، ts)
نسبة الاستخدام
٪ ADMout = adeltamod (sig_in، Delta، fs) ؛
٪ دلتا - دقيقة. حجم الخطوة. سيتم مضاعفة هذا 2nX إذا لزم الأمر
٪ sig_in - إدخال الإشارة ، يجب أن يكون متجهًا
٪ td - فترة أخذ العينات الأصلية لإشارة الدخل ، sig_in
٪ ts - فترة أخذ العينات المطلوبة لإخراج ADM. لاحظ ذلك
يجب أن تكون النسبة المئوية من مضاعفات فترة إشارة الإدخال.
٪ إذا لم يكن كذلك ، فسيتم تقريبه إلى أقرب عدد صحيح.
٪ إخراج الوظيفة: ADMout
إذا (الجولة (نهاية الخبر / الدفتيريا)> = 2)
Nfac = جولة (ts / TD) ؛ ٪ أقرب عدد صحيح
xsig = الاختزال (sig_in ، Nfac) ؛
Lxsig = الطول (xsig) ؛
Lsig_in = الطول (sig_in) ؛
ADMout = أصفار (Lsig_in) ، ٪ تهيئة الإخراج
cnt1 = 0 ؛ ٪ عدادات لا. من الزيادة السابقة على التوالي
cnt2 = 0 ؛ ٪خطوات
المجموع = 0 ؛
بالنسبة إلى i = 1: Lxsig
إذا (xsig (i) == sum)
٪ لا تفعل شيئا
elseif (xsig (i)> sum)
إذا (cnt1 <2)
المجموع = المبلغ + دلتا ؛ ٪ تصعيد بواسطة دلتا ، كما هو الحال في DM
elseif (cnt1 == 2)
المجموع = المبلغ + 2 * دلتا ؛ ٪ مضاعفة حجم الخطوة بعد
أول زيادة بنسبة٪
elseif (cnt1 == 3)
المجموع = sum + 4 * دلتا ؛ ٪ حجم الخطوة المزدوجة
آخر
المجموع = مجموع + 8 * دلتا ؛ ٪ لا يزال يتضاعف ثم يتوقف
٪ مضاعفة عليه
نهاية
إذا (sum <xsig (i))
cnt1 = cnt1 + 1 ؛
آخر
cnt1 = 0 ؛
نهاية
آخر
إذا (cnt2 <2)
المجموع = مجموع - دلتا ؛
elseif (cnt2 == 2)
المجموع = مجموع - 2 * دلتا ؛
elseif (cnt2 == 3)
المجموع = المجموع - 4 * دلتا ؛
آخر
المجموع = المجموع - 8 * دلتا ؛
نهاية
إذا (sum> xsig (i))
cnt2 = cnt2 + 1 ؛
آخر
cnt2 = 0 ؛
نهاية
نهاية
ADMout (((i-1) * Nfac + 1) :( i * Nfac)) = sum ؛
نهاية
نهاية
نهاية