۱۳۹۱/۱۱/۲۰, ۰۳:۰۱ ق.ظ
۱۳۹۱/۱۱/۲۰, ۰۳:۲۸ ق.ظ
سلام .
دستور char در متلب ، یک عدد رو دریافت میکنه و سپس کاراکتر معادل با اون عدد رو بر میگردونه . به مثال زیر توجه کنید :
نتیجه اجرای کد متلب بالا ، به این صورته :
بنابراین دستور char ، کاراکتر معادل عدد 110 رو که ((n)) می باشد در خروجی نمایش داده است .
اما اگر بخواهید نوع یک عدد را از double به string تغییر دهید ، می توانید از دستور num2str استفاده کنید . یعنی در خروجی همان عدد نمایش داده میشه اما نوع عدد از double به string تغییر داده می شود .
دستور 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 بایت فضا اشغال کرد .
من با 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')
a=[0 1 5 1 6 1 3];
c=num2str(a)
b=char(a+'0')
۱۳۹۱/۱۱/۲۳, ۰۱:۴۴ ق.ظ
اگر بعد از دستورهای بالا ، دستور whos به کار بره ، حجم c رو 38 بایت و حجم b رو 14 بایت اعلام میکنه و مشکل ما این 24 بایت اضافه تر هست .
اکنون بخشی از کدها را به گونه دیگری می نویسیم :
حالا اگر دستور whos را به کار ببریم ، این بار حجم c رو 14 بایت اعلام میکنه . بنابراین با تغییر نحوه تعریف a ، می توانید این مشکل را برطرف کنید تا حجم حاصل از هر دو دستور برابر شود .
اکنون بخشی از کدها را به گونه دیگری می نویسیم :
کد:
a=[0;1;5;1;6;1;3];
c=num2str(a)
حالا اگر دستور whos را به کار ببریم ، این بار حجم c رو 14 بایت اعلام میکنه . بنابراین با تغییر نحوه تعریف a ، می توانید این مشکل را برطرف کنید تا حجم حاصل از هر دو دستور برابر شود .
۱۳۹۱/۱۱/۲۳, ۰۲:۵۲ ب.ظ
اگر حجم واقعی اطلاعات بیشتر از حجمی باشه که می خواهید ذخیره بشه باید از روش های فشرده سازی استفاده کنید که من در موردشون اطلاعات خاصی ندارم .
در ضمن با حذف بخش اعشاری اعداد هم میشه حجم رو کمتر کرد .
اما اگه حجم واقعی کمتر باشه ، می تونید اندازه ماتریکس رو بزرگتر کنید و اعضای اضافی که در آینده قرار نیست استفاده بشن رو صفر قرار بدین .
اما اینکه دقیقا حجم یک مقدار باشه ، اینو نمی دونم .
در ضمن با حذف بخش اعشاری اعداد هم میشه حجم رو کمتر کرد .
اما اگه حجم واقعی کمتر باشه ، می تونید اندازه ماتریکس رو بزرگتر کنید و اعضای اضافی که در آینده قرار نیست استفاده بشن رو صفر قرار بدین .
اما اینکه دقیقا حجم یک مقدار باشه ، اینو نمی دونم .