كيف يمكنك جمع القيم داخل لحلقة في Matlab؟

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

  •  11-07-2019
  •  | 
  •  

سؤال

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

وهذا هو ما هو الطباعة إلى إطار الأوامر

والجواب =

5.9676

والجواب =

2.1676

وهنا هو رمز بلادي

pki = [7.7,3.9];

t= 2;


n=55;

for i = 1:t;

    acidic = log10(1/((n-1)*(10^-pki(i))));

    sum(acidic)

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

المحلول

تعديل - يمكنك و<لأ href = "https://stackoverflow.com/questions/1823129/how-do-you-sum-values-inside-a-for-loop-in- ماتلاب / 1823203 # 1823203 "> دوني يشير، لا تحتاج المتغير t.

وليس لديك فاصلة منقوطة على sum(acidic) الخط الخاص بك، لذلك MATLAB يطبع النتيجة. ولكن يبدو أن لديك بعض المشاكل الأخرى - الحمضية هو العددية، بحيث يتم الحصول على الكتابة فوق القيمة في كل مرة. ربما كنت تريد أن تفعل شيئا مثل:

pki = [7.7,3.9];
n = 55;
acidic = log10(1./((n-1).*(10.^-pki)));

disp(sum(acidic))

ملاحظة مشغلي ./، .*، و.^. هذه أقول MATLAB للقيام عنصر من العمليات عنصر على ناقلات. خط disp الماضي يقول MATLAB لطباعة قيمة الانتاج.

نصائح أخرى

وsum() هو لتلخيص كافة القيم في ناقلات، أو على طول محور في المصفوفة. كنت لا حاجة إليها مع الطريقة يكون لديك التعليمات البرمجية تنفيذها. هل يمكن أن تفعل فقط

pki = [7.7,3.9];
t= 2;
n=55;
acidic = 0;
for i = 1:t;
  acidic = acidic + log10(1/((n-1)*(10^-pki(i))));
end;

acidic

ولكن، وهذا هو ماتلاب inefficent إلى حد ما. ما أوصي به هو مجرد حساب كافة القيم في آن واحد، ومن ثم استخدام sum. أنت لا تحتاج إلى بيان for إذا كنت تفعل ذلك بهذه الطريقة:

pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki)));

sum(acidic)

ما يفعل الحساب في دفعة واحدة. إذا كنت لن دائما لاستخدام كل من الحزب الشيوعي الإندونيسي، هل يمكن منخفض في ذلك، مثل ذلك:

pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki(1:t))));

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