تعریف تعداد زیادی متغیر (Variable) جدید، درون یک حلقه for ، با دستور eval ، در متلب (MATLAB)
گاهی نیاز داریم که تعداد زیادی متغیر (Variable) را تعریف کنیم، بنابراین راه مناسب این است که از یک حلقه for استفاده کنیم، اما این سوال پیش می آید که چگونه در حلقه for ، نام های متفاوتی برای این تعداد زیاد از متغیرها، تعریف نماییم. شیوه کدنویسی متلب (MATLAB) را با یک مثال شرح می دهیم :
یک برنامه متلب می نویسیم که متغیرهای با نام x1 و x2 و ... تا x9 را تعریف کرده و مقادیر آنها را برابر 1 و 2 و ... تا 9 قرار دهد :
3 خط اول کدها، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
درون حلقه for ، از دستور eval استفاده کرده ایم که این آزادی عمل را به ما می دهد که دستورهای متلب را که می خواهیم اجرا شود، با یک سری رشته (string) تعریف کنیم. در واقع، چون دیگر با رشته ها سر و کار داریم، بنابراین با تولید رشته های دلخواه در پرانتز دستور eval ، می توانیم کدهای متلب مورد نظرمان را اجرا نماییم.
دستور num2str ، برای تبدیل اعداد به رشته (string) به کار رفته است.
دستور whos ، برای نمایش متغیرهای تعریف شده در متلب می باشد تا چک کنیم که آیا متغیرهای مورد نظرمان، تعریف شده اند یا خیر.
نتیجه :
مشاهده می کنید که متغیرهای 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 قرار دهم . ممنون میشوم راهنمایی بفرمایید