سؤال

أبحث عن خوارزمية لحل المشكلة التالية:

لدي مجموعتان من المتجهات، وأريد العثور على المصفوفة التي تقارب بشكل أفضل التحويل من متجهات الإدخال إلى متجهات الإخراج.

المتجهات هي 3x1، إذن المصفوفة هي 3x3.

هذه هي المشكلة العامة.مشكلتي الخاصة هي أن لدي مجموعة من ألوان RGB ومجموعة أخرى تحتوي على اللون المطلوب.أحاول العثور على تحويل من RGB إلى RGB من شأنه أن يمنحني ألوانًا أقرب إلى الألوان المطلوبة.

هناك مراسلات بين متجهات الإدخال والإخراج، لذا فإن حساب دالة الخطأ التي ينبغي التقليل منها هو الجزء السهل.ولكن كيف يمكنني تقليل هذه الوظيفة؟

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

المحلول

أنت لا تحدد لغة ، لكن إليك كيفية التعامل مع المشكلة في Matlab.

  • V1 عبارة عن مصفوفة 3xn ، تحتوي على ألوان الإدخال في المتجهات الرأسية
  • V2 هي أيضًا مصفوفة 3xn تحتوي على ألوان الإخراج الخاصة بك

تريد حل النظام

M*v1 = v2
M = v2*inv(v1)

ومع ذلك ، فإن V1 ليس قابلاً للانعكاس مباشرة ، لأنه ليس مصفوفة مربعة. سيقوم MATLAB بحل هذا تلقائيًا باستخدام عملية MRDIVIDE (M = V2/V1) ، حيث M هو الحل الأفضل.

eg: 
>> v1 = rand(3,10);
>> M = rand(3,3);
>> v2 = M * v1;
>> v2/v1 - M

ans =

   1.0e-15 *

    0.4510    0.4441   -0.5551
    0.2220    0.1388   -0.3331
    0.4441    0.2220   -0.4441

>> (v2 + randn(size(v2))*0.1)/v1 - M
ans =

    0.0598   -0.1961    0.0931
   -0.1684    0.0509    0.1465
   -0.0931   -0.0009    0.0213

هذه يعطي حلًا أكثر غموضًا للغة حول كيفية حل المشكلة.

نصائح أخرى

هذه مشكلة الجبر الخطية الكلاسيكية ، وهي عبارة رئيسية للبحث عنها هي "الانحدار الخطي المتعدد".

لقد اضطررت إلى ترميز بعض الاختلافات في هذه المرات عدة مرات على مر السنين. على سبيل المثال ، رمز لمعايرة جهاز الكمبيوتر اللوحي أو شاشة اللمس القلم يستخدم نفس الرياضيات.


ها هي الرياضيات:

يترك ص يكون متجه الإدخال و س متجه الإخراج المقابل.

التحول الذي تريده هو مصفوفة 3 × 3. نسميها أ.

لمتجه إدخال وإخراج واحد ص و س, ، هناك ناقل خطأ ه

ه = س - أ x ص

مربع حجم الخطأ هو قيمة العددية:

هر ه = (س - أ x ص) T X (س - أ x ص)

(حيث يتم تحويل المشغل T).

ما تريد حقًا التقليل منه هو مجموع ه القيم على المجموعات:

ه = مجموع (ه)

هذا الحد الأدنى يرضي معادلة المصفوفة د = 0 حيث

د(i ، j) = المشتق الجزئي لـ ه بالنسبة إلى أ(اي جاي)

قل أن لديك ناقلات الإدخال والمخرجات.

مجموعة المدخلات الخاصة بك 3-المصفوفات هي مصفوفة 3xN. استدعاء هذه المصفوفة ص. عمود ITH من ص هو ناقل الإدخال ITH.

هكذا هي مجموعة الإخراج 3 محلات. استدعاء هذه المصفوفة س.

عندما تطحن من خلال كل الجبر ، يكون الحل هو

أ = س x صT x (ص x صر) ^-1

(حيث ^-1 هو المشغل العكسي-آسف على عدم وجود سكان أو مشتركين)


ها هي الخوارزمية:

إنشاء مصفوفة 3xN ص من مجموعة ناقلات الإدخال.

إنشاء مصفوفة 3xN س من مجموعة ناقلات الإخراج.

مصفوفة مضاعفة ص = ص x transpose (ص)

حساب العكسي ص

مصفوفة مضاعفة أ = س x transpose (ص) x معكوس (ص)

باستخدام المصفوفة الضرب وروتين انعكاس المصفوفة لمكتبة الجبر الخطي التي تختارها.


لكن, ، مصفوفة تحويل Affine 3x3 قادرة على تحجيم وتدوير ناقلات الإدخال ، ولكن ليس القيام بأي ترجمة! قد لا يكون هذا عامًا بما يكفي لمشكلتك. عادة ما يكون من الجيد إلحاق "1" في نهاية كل من المجالات الثلاثة لصنع ثم 4 فيت ، والبحث عن أفضل مصفوفة تحويل 3x4 التي تقلل من الخطأ. هذا لا يمكن أن يضر. يمكن أن يؤدي فقط إلى ملاءمة أفضل للبيانات.

يجب أن تكون بعض الجبر الخطي كافية:

اكتب متوسط ​​الفرق المربع بين المدخلات والمخرجات (مجموع مربعات كل فرق بين كل قيمة مدخلات ومخرجات).أفترض أن هذا هو تعريف "أفضل تقريبي"

هذه دالة تربيعية لمعاملات المصفوفة التسعة غير المعروفة.

ولتقليلها، اشتقها بالنسبة لكل واحد منهم.

سوف تحصل على نظام خطي مكون من 9 معادلات عليك حلها للحصول على الحل (فريد أو متنوع حسب مجموعة الإدخال)

عندما لا تكون دالة الفرق تربيعية، يمكنك أن تفعل الشيء نفسه ولكن عليك استخدام طريقة تكرارية لحل نظام المعادلة.

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