کلیدستان

نسخه‌ی کامل: نام دلخواه در دستور save
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام ، در دستور save که محتوای workspace رو ذخیره میکنه ، چطور میتونیم نام دلخواه رو به فایل نسبت بدیم که یک مقدار باشه و همزمان با تغییر مقدار ، مقدار عددی هم در نام فایل ذخیره بشه مثلا اگر در یک m فایل از متغیری با مقدار 10 استفاده شده باشه : percent=10 در ذخیره mat فایل خروجی شماره 10  هم در کنار نام قرار داده شده برای فایل ذخیره بشه
save matrix_10 h.mat  میخوام که عدد 10 متغیر باشه و اگر percent شد 20 ، نام ذخیره mat فایل بشه : matrix_20.  لطفا کمکم کنید. ممنون
 
سلام دوست عزیز.
شیوه معمولی ذخیره کردن متغیر، به این صورت می باشد :

کد:
clear all
close all
clc

A=10;
save('variable.mat','A');

 کد متلب بالا، فایلی با نام variable.mat می سازد که متغیر A در آن ذخیره شده است. 

حالا قصد داریم کدهای بالا را به صورتی تغییر بدهیم که مقدار متغیر A را به صورت یک پسوند، به نام فایل اضافه کند. برای این منظور، از دستور eval استفاده می کنیم که یک رشته را دریافت کرده و آن را به عنوان یک دستور در نظر می گیرد و اجرا می کند. موقتا کاری به افزودن مقدار متغیر به نام فایل نداریم و از دستور eval استفاده می کنیم تا همان کد بالا را اجرا کنیم :

کد:
clear all
close all
clc

A=10;
eval(['save(''variable.mat'',''A'')']);

نتیجه دقیقا مثل کد متلب قبلی می باشد. این رو نوشتم تا ابتدا با نحوه استفاده از دستور eval آشنا بشیم و هم یک نکته مهم رو تذکر بدم و اون نکته این هست که اگر بخواهیم یک رشته را درون دستور eval بنویسیم (یعنی یک رشته درون رشته ای که دستور eval دریافت می کند)، باید در دو طرف رشته، به جای یک بار استفاده از علامت '  ، دو بار این علامت را به کار ببریم. با نگاه به کد متلب بالا، به خوبی متوجه منظورم می شوید.

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

کد:
clear all
close all
clc

A=10;
eval(['save(strcat(''variable-'',num2str(A),''.mat''),''A'')']);

کد متلب بالا، فایلی با نام variable-10.mat می سازد که متغیر A در آن ذخیره شده است.