كيف يمكنك جمع القيم داخل لحلقة في Matlab؟
سؤال
وأريد أن ألخص الحمضية مثل ليدير حلقة ثم بطباعة القيمة الإجمالية لجميع القيم الحمضية السابقة. مشكلتي هي في الوقت الحالي هي أنه في الوقت الراهن مجرد طباعة القيم الفردية لا قيمة لخص أحد الحمضية. كيف يمكنني تلخيص.
وهذا هو ما هو الطباعة إلى إطار الأوامر
والجواب =
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)