سؤال

لدي بعض الوظائف البسيطة التي تأخذ قيمة

يتم التحقق من هذه القيمة لعدد من عبارات if أو elseif لحساب قيمة أخرى.

المشكلة هي أنه يبدو أنه تم العثور على خطأ عند محاولة تشغيل ما يقول

خطأ باستخدام / أبعاد المصفوفة يجب أن توافق.

خطأ في ABC (السطر 9) A = 5000 / G ؛

رمز على النحو التالي

function abc(g)


if (g == 100)
   a = 1;
elseif (g <= 99 & g >= 50)    
   a = 200 -2*g;
elseif (g <= 50 & g >= 1)
   a = 5000 / g;
else
  warning('Invalid value passed, a defaults to 1');
  a =1;
end
end

لذا، أنا أمر بـ abc 100 وأتوقع أن تكون a 1 ولكن بدلاً من ذلك يتم تشغيلها عبر كل if / elseif ويلقي خطأ على = 5000/g

يجب أن أذكر أيضًا أنني حاولت في البداية استخدام && في ملفات elseif ولكن هذا أيضًا أعطى خطأً يقول

المعاملات إلى || و && يجب أن يكون المشغلون قابلين للتحويل إلى القيم العددية المنطقية.

خطأ في ABC (السطر 6) elseif (g <= 99 && g> = 50)

هل لدى أحد أي فكرة عما يحدث هنا؟شكرًا

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

المحلول

من المحتمل أنك تقوم بتمرير مصفوفة إلى وظيفتك، على سبيل المثال.عندما تتصل

abc(yourdata)

yourdata في الواقع ليس رقمًا واحدًا، بل مصفوفة.إذا اتصلت مباشرة

abc(100)

يجب ألا ترى مشكلتك (أو هل أنت كذلك؟).

بعبارة أخرى، مشكلتك الرئيسية ليست داخل وظيفتك, ، ولكن عند الاتصال به!

نظرا لوصفك، يبدو أنك قمت بتعيين yourdata(1) إلى القيمة 100 التي تريد اختبارها، ولكن بعض العناصر الأخرى في المصفوفة لها قيمة مختلفة، ولهذا السبب if بناء الفروع في حالة آخر.هناك، تحتاج ./ بدلاً من / إذا كنت تريد أن تفعل تقسيم العناصر بدلاً من تقسيم المصفوفة.

ولكن في الحقيقة ربما تحتاج فقط إلى التأكد من ذلك yourdata هو عددي عند استدعاء وظيفتك.

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