ترسیم ماتریس ها در متلب به صورت یک تصویر با دستور imagesc
در متلب، با استفاده از دستور imagesc ، می توانید مقادیر یک ماتریس را به صورت یک تصویر مشاهده کنید. در واقع، متلب هر یک از عناصر ماتریس را به صورت یک نقطه در نظر می گیرد و سپس بر اساس مقدار آن نقطه، رنگی را به آن اختصاص می دهد و بنابراین با کنارهم قرار دادن این نقاط، تصویری از مقادیر عناصر ماتریس، حاصل می شود. به مثال زیر توجه کنید :
دستور (10,10)Zeros ، ماتریسی با 10 ردیف و 10 ستون می سازد که تمامی مقادیر عناصر آن، برابر صفر می باشد. سپس با استفاده از دو حلقه تو در توی for ، مقدار هر عنصر ماتریس را برابر مجموع شماره ردیف آن و شماره ستون آن قرار داده ایم. دقت شود که در خطی، تنها نام متغیر A را نوشته ایم و این برای این است که ماتریس متناظر با آن در صفحه Command نمایش داده شود. دستور imagesc ، مقادیر ماتریس A را به صورت یک تصویر رنگی نمایش می دهد.
نتیجه :
و تصویری از مقادیر ماتریس A به شکل زیر نمایش داده می شود :
تغییر رنگ های مورد استفاده در دستور imagesc :
همان طور که گفتیم، دستور imagesc ، به هر مقدار، رنگی را اختصاص داده است، اما شاید بخواهیم رنگ های دیگری برای تصویر انتخاب کنیم. برای این منظور، باید پس از دستور imagesc ، از دستور colormap استفاده کنیم. مثال قبل را این بار به گونه ای تغییر می دهیم که مقادیر ماتریس، به صورت سیاه و سفید، نمایش داده شوند :
پس از دستور imagesc ، از دستور colormap ، با مشخصه gray ، استفاده شده است که باعث می شود دستور imagesc ، تصویر مقادیر ماتریس A را به صورت سیاه و سفید نمایش بدهد.
نتیجه :
و تصویر ماتریس A به صورت زیر نمایش داده می شود :
برای دستور colormap ، می توانیم مشخصه های مختلفی با رنگ های مختلف تعریف کنیم که لیست آنها و رنگ های معادلشان، در زیر نمایش داده شده است :
اگر پس از دستور imagesc ، دستور colormap نوشته نشود، متلب به صورت خودکار، گزینه jet را برای colormap در نظر می گیرد.
نمایش مقدار متناظر با هر رنگ در تصویر :
در تصویر مثال قبل، نمی توانیم تشخیص بدهیم که هر رنگ، چه مقدار عددی را نشان می دهد. برای مشخص شدن مقدار متناظر با هر رنگ، باید پس از دستور imagesc ، از دستور colorbar استفاده کنیم. به مثال زیر توجه کنید :
به کد مثالی که قبلا شرح دادیم، دستور colorbar را اضافه می کنیم :
نتیجه :
و این بار، در کنار تصویر ساخته شده، یک نوار رنگی نمایش داده شده است که مقدار عددی متناظر با هر رنگ را نمایش می دهد :
عالی بود و جالب سپاس
عالی بود . ممنونم
عالیییی بود سپاس فراوان
سایت کلیدستان واقعا محشره، الان چندین وقته هر جا به مشکل میخورم از اطلاعات خوب این سایت استفاده میکنم، واقعا ممنون
سلام . ممنون از اطلاعات خیلی خوبتون .
یه سوال داشتم :
ماتریسی که به صورت (M(:,:,x تعریف میشه را چطوری رسم میکنن؟ دستوری برای رسم این مدل هست؟
سلام.
اگر در (M(:,:,x ، مقدار x برابر یک عدد مشخص باشد، کدنویسی می تواند مشابه کد متلب (MATLAB) زیر باشد (با تغییر کدنویسی همین کلید آموزشی) :
اما اگر x هم متغیر فرض شود، با توجه به ابعاد ماتریس، باید از دستور surf و یا دستورات مشابه در متلب (MATLAB) استفاده شود :
دستورات مشابه دستور surf را می توانید در دسته کلید (دسته بندی) زیر بیابید :
جالب بود. تشکر
با سلام
مطالبتون خیلی مفیده . یک سوال داشتم اگر بخواهیم برای داده هامون محدوده تعریف کنیم و بگیم هر محدوده رو با یک رنگ خاص نشون بده باید از چه کدی استفاده کنیم ؟؟
سلام من میخوام عکس سیاه و سفیدی درست کنم که قسمت بالا و پایینش سفید باشه و وسطش سیاه و اطراف سیاه هم خاکستری
از چه دستوری استفاده کنم؟؟؟
ممنون میشم راهنمایی کنید نیاز فوری دارم
با سلام و تشکر از مطالب بسیار خوبتون
اگر بخواهیم برای داده هامون محدوده تعریف کنیم و بگیم هر محدوده رو با یک رنگ خاص نشون بده باید از چه کدی استفاده کنیم ؟
سلام.
در این زمینه، یک روش پیشنهادی می تواند به صورت زیر باشد :
می توانید یک ماتریس جدید بسازید (فقط برای استفاده در رسم شکل) که در آن، مقادیر اصلی در ماتریس اصلی برای هر محدوده را به تنها یک عدد تبدیل می کنید.
مثلا برای محدوده اعداد 0 تا 10 ، همه آنها را در ماتریس جدید، به مقدار میانگین محدوده، یعنی 5 تبدیل می کنید. برای محدوده 10 تا 20 ، همه تبدیل به 15 و ... .
بنابراین چون در ماتریس جدید، برای هر محدوده، تنها یک عدد در نظر گرفته شده، بنابراین هنگام رسم این ماتریس جدید، همه اعداد مربوط به یک محدوده، تنها با یک رنگ (Color) در شکل نمایش داده می شوند.
سلام.
همچنین توصیه می شود که کلید آموزشی زیر در مورد تعریف یک طرح رنگ آمیزی (Colormap) جدید در متلب (MATLAB) را نیز بخوانید :
با سلام و خسته نباشید
چگونه میتوانیم مقادیر اندیس های یک ماتریس را به شکل یک درخت نمایش دهیم؟
سلام وقتتون بخیر من یه سوال دارم برای این دستور چطوری میشه 16 تا ماتریس تعریف کرد؟؟ مثلا من 16 تا ماتریس 10در 2 دارم میخوام از این دستور استفاده کنم چطوری میشه ؟؟لطفا جوابمو بدید خیلی نیاز دارم
سلام.
اگر منظورتان این است که بر اساس 16 ماتریسی که داریم، 16 تصویر در کنار هم ساخته شود که بتوانیم آنها را با هم مقایسه کنیم، در این مورد باید علاوه بر دستور imagesc ، از دستور subplot نیز کمک بگیریم :
در واقع شما هر بار با استفاده از دستور imagesc یکی از ماتریس ها را با همان قواعد عادی استفاده از دستور imagesc رسم می کنید (رسم تک تک ماتریس ها با کدهای جداگانه) و صرفا از دستور subplot کمک می گیرید که رسم همگی تصویرها در کنار یکدیگر و تنها در یک پنجره باشد (یعنی 16 بار دستور imagesc اجرا خواهد شد و همچنین برای کم حجم شدن کدها می توانید از حلقه for نیز استفاده کنید).
ممنون از جوابتون یه سوال دیگه هم داشتم من الان ی نمودار دارم که polar هستش من میخوام از دستور imagesc استفتده کنم چطوری باید اجراش کنم ؟؟