کلیدستان

نسخه‌ی کامل: تبدیل یک ماتریس به ماتریس های کوچکتر، در متلب
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام
ممنون از راهنمایی های خوبتون
میخواستم بدونم چه طوری میتونم یه ماتریس مثلا 6*5 رو تبدیل کنم به 5 تا ماتریس 6*1 ؟؟؟
یعنی میخوام هر سطر ماتریس رو به یک ماتریس جداگونه تبدیل کنم
با تشکر
سلام.
من براتون مثال می زنم، فقط قبل از خواندن کدهای آن، بهتر است کلید زیر را بخوانید تا با چگونگی تعریف متغیرها با استفاده از دستور eval آشنا شوید :

کلید شماره 154

کدها را به گونه ای نوشتم که اگر تعداد سطرها خیلی زیاد بود، همین چند خط کد کافی باشد (درون حلقه for ماتریس ها را تعریف می کنیم) :

کد پی‌اچ‌پی:
clear all
close all
clc

A
=[1  2  3  4  5  6;
   
7  8  9  10 11 12;
   
13 14 15 16 17 18;
   
19 20 21 22 23 24;
   
25 26 27 28 29 30]

A_size=size(A)
for 
nn=1:A_size(1)
    eval([
'x'num2str(nn) , ' = A(' num2str(nn) ,',1:end)']);
end 

نتیجه اجرای کد متلب بالا :

کد پی‌اچ‌پی:
=

     
1     2     3     4     5     6
     7     8     9    10    11    12
    13    14    15    16    17    18
    19    20    21    22    23    24
    25    26    27    28    29    30


A_size 
=

     
5     6


x1 
=

     
1     2     3     4     5     6


x2 
=

     
7     8     9    10    11    12


x3 
=

    
13    14    15    16    17    18


x4 
=

    
19    20    21    22    23    24


x5 
=

    
25    26    27    28    29    30 

با سلام
من یه ماتریس (8190،2) دارم میخام به 90 تا ماتریس (91،2) تبدیل کنم. البته نیاز دارم که همه ی 90 تا ماتریس هم ذخیره کنم و داشته باشم.

ممنون میشم اگه راهنمایی کنید.

با تشکر

 
سلام.
در این موارد، باید از حلقه for استفاده کنیم و در حلقه، تعیین کنیم که به عنصرهای مناسب در ماتریس اصلی اشاره شده و آنها را در یک ماتریس جدید قرار بدهیم.
برای 90 ماتریس، باید نام های متفاوتی داشته باشیم، ولی در حلقه for ، امکان تعریف نام های متفاوت نیست، اما خوشبختانه در کلید زیر برای این مشکل، راه حلی ارائه شده است :

کلید شماره 154

که در آن از دستور eval برای اجرای یک رشته (string) به صورت دستور، استفاده کرده ایم.
بنابراین مثلا می توانیم ماتریس های با نام A_1 و A_2 و ... و A_90 تعریف کنیم که در آنها، عنصرهای مناسب از ماتریس اصلی قرار گرفته باشد.

سلام
بازهم تشکر و البته یه سوال دیگه!
من یه ماتریس یک در 18 دارم که میخوام عضو 1 و 7 و13 خود تشکیل یک بردار جداگانه دهند.به همین ترتیب عضوهای 2 و8و 14وسپس عضوهای 3و9و15و به همین ترتیب تا نهایتا به عضوهای 6و12و18 برسیم که هر3 تاعضو با این ترتیب ها(با فاصله 6تایی)تشکیل یک بردار 3تایی جداگانه دهند.
ممنون میشم اگه راهنمایی کنید.