سلام.
برای تبدیل یک ماتریس به چند ماتریس مختلف، بنده دستور خاصی رو نمی شناسم (می توانید در این زمینه تحقیق کنید)، البته دستور reshape برای تغییر اندازه یک ماتریس به کار می رود (
کلید شماره 71)، ولی برای تبدیل یک ماتریس به چند ماتریس جداگانه، کاربردی ندارد.
ولی به نظر می آید که راه حل استفاده از حلقه for مناسب خواهد بود، البته بستگی دارد که کدها به چه صورت نوشته شود.
اولین توصیه بنده این است که اگر قرار است در برنامه مورد نظرتان، صرفا بر اساس اطلاعات همان ماتریس اصلی، نتایجی را استخراج کنید، تا حد ممکن سعی کنید که از ساخت ماتریس های جداگانه خودداری کنید، مثلا در مورد شماره 2 که گفتید درایه متناظر از ماتریس ها خوانده شود و در یک بردار ذخیره گردد، خواندن و اجرای آن عملیات از ماتریس اصلی، ساده تر خواهد بود و ساخت چند ماتریس، تنها ما را کمی گیج می کند (منظورم این است که تنها زمانی به سراغ ساخت چند ماتریس بروید که حتما عملیات یا نتایجی را می خواهید انجام بدهید که اجرای آن، نیاز به وجود آن چند ماتریس داشته باشد).
اما به هر حال اگر ساخت چند ماتریس جدا از ماتریس اصلی، مهم است، می توانید بر اساس کلید زیر، یک تعداد ماتریس را با نام های دارای ترتیب عددی بسازید (مثلا با نام های m_1 و m_2 و ... و m_z که می شود z تا ماتریس بر اساس ماتریس اصلی) :
کلید شماره 154
با این نوع ساخت ماتریس، شما خیلی راحت می توانید بر اساس عدد موجود در آخر نام هر ماتریس، به آن ارجاع بدهید. چون پیشوند _m ثابت است و مثلا قرار دادن عدد 6 در آخر آن، متناظر با ماتریس شماره 6 می باشد.
بنده کد زیر را به عنوان یک مثال می نویسم تا شیوه کدنویسی آن را متوجه شوید :
کد پیاچپی:
clear all
close all
clc
% define A
A(:,:,1) = [1 2 3; 4 5 6; 7 8 9];
A(:,:,2) = [11 12 13; 14 15 16; 17 18 19];
A(:,:,3) = [21 22 23; 24 25 26; 27 28 29];
A
% build matrix
for kk=1:3
eval(['m_', num2str(kk) , ' = A(:,:,' , num2str(kk) ,');']); % example : m_1 = A(:,:,1);
end
% test result
m_1
m_2
m_3
نکته مهم در کدهای بالا، دستور eval است که به ما امکان اجرای یک رشته (متن) را به عنوان ((کد اجرایی)) می دهد. بنابراین به راحتی می توانیم پسوند عددی مربوط به ماتریس ها که متغیر حلقه for است را در کدهای اجرایی بیاوریم.
نتیجه اجرای کد متلب (MATLAB) بالا :
کد پیاچپی:
A(:,:,1) =
1 2 3
4 5 6
7 8 9
A(:,:,2) =
11 12 13
14 15 16
17 18 19
A(:,:,3) =
21 22 23
24 25 26
27 28 29
m_1 =
1 2 3
4 5 6
7 8 9
m_2 =
11 12 13
14 15 16
17 18 19
m_3 =
21 22 23
24 25 26
27 28 29