MATLAB: لماذا هذا الجمع لا يعمل بشكل صحيح؟
سؤال
وأنا أحاول أن إجراء الجمع حقا بسيطة في MATLAB. هنا هو رمز بلادي:
moment = 0;
for y=1:rows,
for x=1:cols,
moment = moment + (x^p * y^q * Im(y,x));
end
end
وأريد (س ^ ع * ص ^ ف * ايم (ص، س)) يتم حسابها لكل التكرار، وأضاف إلى المتغير لحظة، ولكن هذه المهمة تعود لحظة أول مرة حسابه. لا يبدو للقيام مضيفا على الإطلاق.
وربما خطأ غبي، ولكن أنا في حيرة حقا. أي اقتراحات؟
المحلول
ويمكن أن يكون ذلك Im
هو من نوع <قوية> uint8 أو نوع مماثل من مجموعة صغيرة؟ محاولة وضع هذا السطر قبل الحلقات:
Im = double(Im);
وراجع للشغل يمكنك كتابة التعليمات البرمجية في سطر واحد:
moment = sum(sum( ((1:rows)'.^q * (1:cols).^p) .* double(Im) ));
نصائح أخرى
ووضع نقطة توقف على خط moment = moment + ...
ومعرفة ما إذا كانت "لحظة" متغير وتجري زيادة.
وأنا لست متأكدا لماذا كنت تستخدم الفاصلة في هذا البيان. وينبغي أن لا يكون لها تأثير، وأنا لا أعتقد، ولكن لا لزوم لها.
لا تنتمي إلى StackOverflow