حسین اتحادی پنجشنبه 19 آذر 1394 05:05 ق.ظ نظرات ()

همانطور که می دانید، دستور:

sum(A)

جمع عضوهای هر ستون از ماتریس A را بر می گرداند. یعنی اگر A ماتریسی به ابعاد mxn باشد، حاصل

sum(A)

برداری است nx1 که اعضای آن، مجموع اعضای هر ستون از A است.

colsums = sum(A);

 sem-mec.sub.ir

حال اگر بر فرض بخواهیم این دستور، مجموع اعضای هر سیر از ماتریس را بدهد، چه می کنیم؟

یک راه این است، که از ترانهاده ماتریس sum می گیریم:

rowsums = sum(A’)

که اگر بخواهیم، حاصل شکل ستونی خود را حفظ کند، باید حاصل را نیز ترانهاده کنیم.

اما برای این کار، راه ساده تری هست: پارامتر دیگری به دستور sum اضافه می کنیم:

dimsums = sum(A,n)

که در آن، n بُعدی است که می خواهیم عمل مجموع گیری روی آن صورت گیرد. اگر بخواهیم از اعضای ستونها مجموع بگیرد، n را 1 قرار می دهیم که همان پیش فرض است. اگر از اعضای ستونها مجموع بگیرد، n را 2 قرار می دهیم. اگر حتی ماتریس ما ابعاد بالاتری داشت و خواستیم از آن بُعد مجموع بگیرد، n را برابر آن بُعد قرار می‌دهیم.

 

اگر بخواهیم مجموع کل درایه های ماتریس را به دست آوریم، راهش (که خودم تا چند وقت پیش به کار می بردم) این بود

sum(sum(A))

اگر ابعاد ماتریس بالا برود، کار مجموع گیری دردسرساز می شود. برای مجموع گیری از کل درایه های ماتریس، راه ساده تری پیشنهاد می شود:

sum(A(:))

این دستور در واقع اول کل اعضای ماتریس A را به صورت یک بردار ستونی در می آورد، بعد از آن مجموع می گیرد. استفاده از

A(:)

در خیلی جاها بدرد خواهد خورد.