تعریف تعداد زیادی متغیر جدید، درون یک حلقه for ، در متلب
گاهی نیاز داریم که تعداد زیادی متغیر را تعریف کنیم، بنابراین راه مناسب این است که از یک حلقه for استفاده کنیم، اما این سوال پیش می آید که چگونه در حلقه for ، نام های متفاوتی برای این تعداد زیاد از متغیرها، تعریف نماییم. شیوه کدنویسی متلب را با یک مثال برایتان شرح می دهم :
یک برنامه متلب می نویسیم که متغیرهای با نام x1 و x2 و ... تا x9 را تعریف کرده و مقادیر آنها را برابر 1 و 2 و ... تا 9 قرار دهد :
close all
clc
for k = 1:9
eval(['x', num2str(k) , ' = ' , num2str(k) ,';']);
end
whos
سه خط اول کدهای متلب، برای عدم تداخل این برنامه با برنامه های قبلی اجرا شده می باشد. درون حلقه for ، از دستور eval استفاده کرده ایم که این آزادی عمل را به ما می دهد که دستورهای متلب را که می خواهیم اجرا شود، با یک سری رشته (string) تعریف کنیم. در واقع، چون دیگر با رشته ها سر و کار داریم، بنابراین با تولید رشته های دلخواه در پرانتز دستور eval ، می توانیم کدهای متلب مورد نظرمان را اجرا نماییم.
دستور num2str ، برای تبدیل اعداد به رشته (string) به کار رفته است.
دستور whos ، برای نمایش متغیرهای تعریف شده در متلب می باشد تا چک کنیم که آیا متغیرهای مورد نظرمان، تعریف شده اند یا خیر.
نتیجه :
k 1x1 8 double
x1 1x1 8 double
x2 1x1 8 double
x3 1x1 8 double
x4 1x1 8 double
x5 1x1 8 double
x6 1x1 8 double
x7 1x1 8 double
x8 1x1 8 double
x9 1x1 8 double
مشاهده می کنید که متغیرهای x1 تا x9 درون متلب، تعریف شده اند.
کپی برداری توسط سایر وب سایت ها، ممنوع بوده و پیگرد قانونی دارد. (بیشتر بدانید)


امکانش هست که توابعی رو که با eval تعریف کردیم رو بشه دوباره بصورت پارامتری فراخوانی کرد؟
مثلا k12=10 و K13=20 و K14=30 تعریف کردیم
بصورت k14 که داخل حلقه نوشتم جوابش رو بعد از اجرای برنامه میاره 30
ولی میخوام با k1y تعریف کنم که داخل حلقه زمانی که y=2 شد k12 رو فراخوانی کنه


چجوری میشه این متغیر ها رو تو یک ماتریس ذخیره کرد ؟


با سلام
ببخشید اگر به جای اعداد ۱ تا۹ بخواهیم به X1 تا X9 هر کدام یک ماتریس اختصاص دهیم ، مثلا X1 برابر یک ماتریس مشخص باشد و همینطور تا x9 ، چکار باید بکنیم . من میخوام از دستور ((cell2mat(A(i یک ماتریس که حاوی تعدادی سلول هست را هر بار با دستور cell2mat به یک ماتریس تبدیل کرده و داخل X1تا X9 قرار دهم . ممنون میشوم راهنمایی بفرمایید