سؤال

أحاول تنفيذ هذا extenstion. من خوارزمية سلسلة Karplus-Struction، لكنني لا أفهم التدوين المستخدمة هناك. ربما سيستغرق الأمر سنوات من الدراسة، ولكن ربما لن تفعل ذلك - ربما يمكنك أن تخبرني.

أعتقد أن المعادلات أدناه هي في مجال التردد أو شيء من هذا. مجرد بدء مع المعادلة الأولى، حب(z)، واختيار اتجاه lowpass مرشح. لاتجاه واحد تستخدم P = 0، للآخر، ربما 0.9. هذا يتلخص إلى 1 في الحالة الأولى، أو 0.1 / (1 - 0.9 Z-1) في الثانية.

نص Alt http://www.dsprelated.com/josimages/pasp/img902.png.

الآن، أشعر أن هذا قد يعني، في شروط الترميز، شيء نحو:

H_p(float* input, int time) {
  if (downpick) {
    return input[time];
  } else {
    return some_function_of(input[t], input[t-1]);
  }
}

يمكن للشخص أن تعطيني تلميحا؟ أم أن هذا غير مجدي وأحتاج حقا إلى كل خلفية DSP لتنفيذ هذا؟ كنت عالم رياضيات مرة واحدة ... ولكن هذا ليس نطاقي.

هل كانت مفيدة؟

المحلول

وبالتالي فإن Z.-1 يعني فقط تأخير وحدة واحدة.

دعنا نأخذ حب = (1-P) / (1-PZ-1).

إذا اتبعنا اتفاقية "X" للمدخلات و "y" للإخراج، فإن وظيفة النقل H = Y / X (= الإخراج / الإدخال)

لذلك نحصل على Y / X = (1-P) / (1-PZ-1)

أو (1-P) X = (1-PZ-1) Y.

(1-p) x [n] = y [n] - py [n-1

أو: y [n] = py [n-1] + (1-p) x [n

في كود C، يمكن تنفيذ ذلك

y += (1-p)*(x-y);

دون أي دولة إضافية تتجاوز استخدام الناتج "Y" كمتغير حالة نفسها. أو يمكنك الذهاب لنهج أكثر حرفية:

y_delayed_1 = y;
y = p*y_delayed_1 + (1-p)*x;

بقدر ما تذهب المعادلات الأخرى، فإنها جميع المعادلات النموذجية باستثناء تلك المعادلة الثانية التي تبدو وكأنها طريقة لاختيار إماΒ = 1-z-1 أو 1-z-2. وبعد (ما هو ن؟)

المرشحات هي نوع من غامض وسوف تكون أكثر صرامة بالنسبة لك للتعامل معها ما لم تتمكن من العثور على بعض المرشحات المحددة. بشكل عام هم من النموذج

ح = H0 * (1 + AZ-1+ bz.-2+ تشيكوسلوفاكيا-3...) / (1 + rz-1+ sz.-2+ tz.-3...)

وكل ما تفعله هو الكتابة H = Y / X، وضرب الصليب للحصول على

H0 * (1 + AZ-1+ bz.-2+ تشيكوسلوفاكيا-3...) * x = (1 + rz-1+ sz.-2+ tz.-3...) * ذ

ثم عزل "y" بحد ذاته، مما يجعل الإخراج "Y" وظيفة خطية من التأخير المختلفة لنفسها والإدخال.

لكن تصميم المرشحات (اختيار A، B، C، إلخ.) أصعب من تنفيذها، في معظمها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top