کلیدستان

نسخه‌ی کامل: dastoor char
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
mishe lotfan dar morede dastoore char tozih bedin, dar vaghe mishe az char ?vase tabdile double be char estefade konam
سلام .
دستور char در متلب ، یک عدد رو دریافت میکنه و سپس کاراکتر معادل با اون عدد رو بر میگردونه . به مثال زیر توجه کنید :

کد:
char(110)

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

کد:
ans =

n

بنابراین دستور char ، کاراکتر معادل عدد 110 رو که ((n)) می باشد در خروجی نمایش داده است .

اما اگر بخواهید نوع یک عدد را از double به string تغییر دهید ، می توانید از دستور num2str استفاده کنید . یعنی در خروجی همان عدد نمایش داده میشه اما نوع عدد از double به string تغییر داده می شود .
num2str nesbat be char bytaye bishtario migire!!!man mikham hadde acsare byte javabam 10 byte bashe.
نوع (کلاس - class) خروجی هر دو دستور به صورت char هست . num2str هم تنها عدد میگیره ، بنابراین اگر یک عدد رو به صورت کاراکتر با هر دوی این دو دستور بسازید ، باید اندازه دو جواب یکسان باشه .
از دستور whos برای چک کردن اندازه متغیرهای تعریف شده در متلب استفاده کنید .
من با num2str عدد 2 رو به صورت کاراکتر تعریف کردم و تنها 2 بایت فضا اشغال کرد .
are fek konam vase adada 2byte mide vali vaseye matrixa bytash motevafete,masalan a=[01010] ke dar nazar migiram char ba num2str fargh mikone.
یعنی یک ماتریس رو هم با num2str و هم با char ساختید و بعد حجم نتایج فرق داشت ؟
بهتره مثالتون رو بنویسید تا ببینیم چرا فرق دارند .
are masalan
a=[0 1 5 1 6 1 3];
c=num2str(a)
b=char(a+'0')
اگر بعد از دستورهای بالا ، دستور whos به کار بره ، حجم c رو 38 بایت و حجم b رو 14 بایت اعلام میکنه و مشکل ما این 24 بایت اضافه تر هست .
اکنون بخشی از کدها را به گونه دیگری می نویسیم :

کد:
a=[0;1;5;1;6;1;3];
c=num2str(a)

حالا اگر دستور whos را به کار ببریم ، این بار حجم c رو 14 بایت اعلام میکنه . بنابراین با تغییر نحوه تعریف a ، می توانید این مشکل را برطرف کنید تا حجم حاصل از هر دو دستور برابر شود .
اگر حجم واقعی اطلاعات بیشتر از حجمی باشه که می خواهید ذخیره بشه باید از روش های فشرده سازی استفاده کنید که من در موردشون اطلاعات خاصی ندارم .
در ضمن با حذف بخش اعشاری اعداد هم میشه حجم رو کمتر کرد .
اما اگه حجم واقعی کمتر باشه ، می تونید اندازه ماتریکس رو بزرگتر کنید و اعضای اضافی که در آینده قرار نیست استفاده بشن رو صفر قرار بدین .
اما اینکه دقیقا حجم یک مقدار باشه ، اینو نمی دونم .