آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

ترسیم ماتریس ها در متلب به صورت یک تصویر با دستور imagesc

در متلب، با استفاده از دستور imagesc ، می توانید مقادیر یک ماتریس را به صورت یک تصویر مشاهده کنید. در واقع، متلب هر یک از عناصر ماتریس را به صورت یک نقطه در نظر می گیرد و سپس بر اساس مقدار آن نقطه، رنگی را به آن اختصاص می دهد و بنابراین با کنارهم قرار دادن این نقاط، تصویری از مقادیر عناصر ماتریس، حاصل می شود. به مثال زیر توجه کنید :

مثال

دستور (10,10)Zeros ، ماتریسی با 10 ردیف و 10 ستون می سازد که تمامی مقادیر عناصر آن، برابر صفر می باشد. سپس با استفاده از دو حلقه تو در توی for ، مقدار هر عنصر ماتریس را برابر مجموع شماره ردیف آن و شماره ستون آن قرار داده ایم. دقت شود که در خطی، تنها نام متغیر A را نوشته ایم و این برای این است که ماتریس متناظر با آن در صفحه Command نمایش داده شود. دستور imagesc ، مقادیر ماتریس A را به صورت یک تصویر رنگی نمایش می دهد.

نتیجه :

و تصویری از مقادیر ماتریس A به شکل زیر نمایش داده می شود :

ترسیم ماتریس ها در متلب به صورت یک تصویر با دستور imagesc

تغییر رنگ های مورد استفاده در دستور imagesc :

همان طور که گفتیم، دستور imagesc ، به هر مقدار، رنگی را اختصاص داده است، اما شاید بخواهیم رنگ های دیگری برای تصویر انتخاب کنیم. برای این منظور، باید پس از دستور imagesc ، از دستور colormap استفاده کنیم. مثال قبل را این بار به گونه ای تغییر می دهیم که مقادیر ماتریس، به صورت سیاه و سفید، نمایش داده شوند :

مثال

پس از دستور imagesc ، از دستور colormap ، با مشخصه gray ، استفاده شده است که باعث می شود دستور imagesc ، تصویر مقادیر ماتریس A را به صورت سیاه و سفید نمایش بدهد.

نتیجه :

و تصویر ماتریس A به صورت زیر نمایش داده می شود :

ترسیم ماتریس ها در متلب به صورت یک تصویر با دستور imagesc

برای دستور colormap ، می توانیم مشخصه های مختلفی با رنگ های مختلف تعریف کنیم که لیست آنها و رنگ های معادلشان، در زیر نمایش داده شده است :

ترسیم ماتریس ها در متلب به صورت یک تصویر با دستور imagesc

اگر پس از دستور imagesc ، دستور colormap نوشته نشود، متلب به صورت خودکار، گزینه jet را برای colormap در نظر می گیرد.

نمایش مقدار متناظر با هر رنگ در تصویر :

در تصویر مثال قبل، نمی توانیم تشخیص بدهیم که هر رنگ، چه مقدار عددی را نشان می دهد. برای مشخص شدن مقدار متناظر با هر رنگ، باید پس از دستور imagesc ، از دستور colorbar استفاده کنیم. به مثال زیر توجه کنید :

مثال

به کد مثالی که قبلا شرح دادیم، دستور colorbar را اضافه می کنیم :

نتیجه :

و این بار، در کنار تصویر ساخته شده، یک نوار رنگی نمایش داده شده است که مقدار عددی متناظر با هر رنگ را نمایش می دهد :

ترسیم ماتریس ها در متلب به صورت یک تصویر با دستور imagesc
نویسنده علیرضا گلمکانی
شماره کلید 20
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 18 17 1
من
۱۳۹۵/۰۵/۰۲
۱۵:۲۵

عالی بود و جالب سپاس

فرهاد
۱۳۹۵/۱۲/۰۴
۰۵:۵۲

عالی بود . ممنونم

پریسا
۱۳۹۶/۰۸/۱۰
۱۹:۱۹

عالیییی بود سپاس فراوان

رضا
۱۳۹۶/۱۰/۰۱
۱۹:۰۴

سایت کلیدستان واقعا محشره، الان چندین وقته هر جا به مشکل میخورم از اطلاعات خوب این سایت استفاده میکنم، واقعا ممنون

ghazal
۱۳۹۷/۰۲/۲۹
۱۱:۱۲

سلام . ممنون از اطلاعات خیلی خوبتون . 

 یه سوال داشتم :

ماتریسی که به صورت (M(:,:,x تعریف میشه را چطوری رسم میکنن؟ دستوری برای رسم این مدل هست؟

admin
۱۳۹۷/۰۲/۳۰
۱۱:۵۰

سلام.
اگر در (M(:,:,x ، مقدار x برابر یک عدد مشخص باشد، کدنویسی می تواند مشابه کد متلب (MATLAB) زیر باشد (با تغییر کدنویسی همین کلید آموزشی) :

کد پی‌اچ‌پی:
clear all
close all
clc

zeros(10,10,10);
for 
m=1:10
    for n
=1:10
        for f
=1:10
            A
(m,n,f)=m+n+f;
 
       end
    end
end
A
imagesc
(A(:,:,5)) 

اما اگر x هم متغیر فرض شود، با توجه به ابعاد ماتریس، باید از دستور surf و یا دستورات مشابه در متلب (MATLAB) استفاده شود :

کلید شماره 114

دستورات مشابه دستور surf را می توانید در دسته کلید (دسته بندی) زیر بیابید :

دسته کلید شماره 292

Flower

موسوی
۱۳۹۷/۰۵/۲۵
۱۹:۴۶

جالب بود. تشکر

فاطمه
۱۳۹۷/۰۶/۱۳
۱۱:۵۸

با سلام
مطالبتون خیلی مفیده . یک سوال داشتم اگر بخواهیم برای داده هامون محدوده تعریف کنیم و بگیم هر محدوده رو با یک رنگ خاص نشون بده باید از چه کدی استفاده کنیم ؟؟

فاطمه
۱۳۹۷/۰۸/۲۲
۰۰:۱۶

سلام من میخوام عکس سیاه و سفیدی درست کنم که قسمت بالا و پایینش سفید باشه و وسطش سیاه و اطراف سیاه هم خاکستری
از چه دستوری استفاده کنم؟؟؟
ممنون میشم راهنمایی کنید نیاز فوری دارم

پیمان
۱۳۹۷/۱۰/۰۷
۰۰:۰۵

با سلام و تشکر از مطالب بسیار خوبتون
 اگر بخواهیم برای داده هامون محدوده تعریف کنیم و بگیم هر محدوده رو با یک رنگ خاص نشون بده باید از چه کدی استفاده کنیم ؟

admin
۱۳۹۷/۱۰/۰۷
۱۳:۱۴

سلام.
در این زمینه، یک روش پیشنهادی می تواند به صورت زیر باشد :
می توانید یک ماتریس جدید بسازید (فقط برای استفاده در رسم شکل) که در آن، مقادیر اصلی در ماتریس اصلی برای هر محدوده را به تنها یک عدد تبدیل می کنید.
مثلا برای محدوده اعداد 0 تا 10 ، همه آنها را در ماتریس جدید، به مقدار میانگین محدوده، یعنی 5 تبدیل می کنید. برای محدوده 10 تا 20 ، همه تبدیل به 15 و ... . 
بنابراین چون در ماتریس جدید، برای هر محدوده، تنها یک عدد در نظر گرفته شده، بنابراین هنگام رسم این ماتریس جدید، همه اعداد مربوط به یک محدوده، تنها با یک رنگ (Color) در شکل نمایش داده می شوند.

Flower

admin
۱۳۹۷/۱۰/۰۷
۱۳:۱۹

سلام.
همچنین توصیه می شود که کلید آموزشی زیر در مورد تعریف یک طرح رنگ آمیزی (Colormap) جدید در متلب (MATLAB) را نیز بخوانید :

کلید شماره 793

Flower

زهرا
۱۳۹۸/۰۹/۲۲
۱۸:۴۱

Iran

mahya_.md
۱۳۹۹/۰۴/۳۰
۲۲:۱۳

با سلام و خسته نباشید


چگونه میتوانیم مقادیر اندیس های یک ماتریس را به شکل یک درخت نمایش دهیم؟

ژینا
۱۴۰۲/۱۰/۲۰
۱۶:۲۶

سلام وقتتون بخیر من یه سوال دارم برای این دستور چطوری میشه 16 تا ماتریس تعریف کرد؟؟ مثلا من 16 تا ماتریس 10در 2 دارم میخوام از این دستور استفاده کنم چطوری میشه ؟؟لطفا جوابمو بدید خیلی نیاز دارم

admin
۱۴۰۲/۱۰/۲۱
۱۹:۳۹

سلام.

اگر منظورتان این است که بر اساس 16 ماتریسی که داریم، 16 تصویر در کنار هم ساخته شود که بتوانیم آنها را با هم مقایسه کنیم، در این مورد باید علاوه بر دستور imagesc ، از دستور subplot نیز کمک بگیریم :

در واقع شما هر بار با استفاده از دستور imagesc یکی از ماتریس ها را با همان قواعد عادی استفاده از دستور imagesc رسم می کنید (رسم تک تک ماتریس ها با کدهای جداگانه) و صرفا از دستور subplot کمک می گیرید که رسم همگی تصویرها در کنار یکدیگر و تنها در یک پنجره باشد (یعنی 16 بار دستور imagesc اجرا خواهد شد و همچنین برای کم حجم شدن کدها می توانید از حلقه for نیز استفاده کنید).

ژینا
۱۴۰۲/۱۰/۲۳
۰۹:۴۵

ممنون از جوابتون یه سوال دیگه هم داشتم من الان ی نمودار دارم که polar  هستش من میخوام از دستور imagesc استفتده کنم چطوری باید اجراش کنم ؟؟ 

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)