MATLAB: لماذا هذا الجمع لا يعمل بشكل صحيح؟

StackOverflow https://stackoverflow.com/questions/1622249

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أحاول أن إجراء الجمع حقا بسيطة في 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 + ... ومعرفة ما إذا كانت "لحظة" متغير وتجري زيادة.

وأنا لست متأكدا لماذا كنت تستخدم الفاصلة في هذا البيان. وينبغي أن لا يكون لها تأثير، وأنا لا أعتقد، ولكن لا لزوم لها.

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