Hold all


ทุกคนที่เคยใช้ Matlab คงจะไม่มีใครไม่เคยใช้ฟังก์ชัน hold on หรือ hold off  ที่ blog ของ Loren มีการนำเสนอตัวเลือกของฟังก์ชัน hold นั่นคือ hold all และเหมือนทุกครั้ง ผมก็พึ่งรู้ว่ามีงี้ด้วย

ยกตัวอย่างปัญหาที่มักเกิดขึ้นเสมอ ๆ แล้วกันครับ เวลาเราพล็อตกราฟเพื่อเปรียบเทียบ เอาตามตัวอย่างของ Loren แต่นำเสนอให้เข้ากับสถานการณ์จริงมากขึ้นคือ สมมติว่า  เราสร้างฟังก์ชัน sin แล้วพล็อตดังนี้

t = 0:0.005:1;
f = sin(2*pi*10*t);
plot(t,f)

ซึ่งเราก็จะได้กราฟดังรูปsin

จากนั้นถ้าต้องการจะเพิ่มสัญญาณรบกวนเข้าไป แล้วพล็อตเปรียบเทียบกัน ก็ทำง่าย ๆ ดังนี้

fn = f + 0.3*randn(size(t));
hold on
plot(t,fn)
legend('signal','signal with noise');

ผลที่ได้ก็ดังนี้

sin2แน่นอนดูไม่ออกว่าอันไหนเป็นอันไหนใช่ไหมครับ เกือบทุก ๆ คนเวลาเจอปัญหานี้ก็จะแก้บรรทัด plot(t,fn,’g’) คือให้ใส่สีเขียวด้วย เจ้าแม่บอกว่าอย่าทำอย่างนั้นเลยมันไม่ดีหรอก เสียเวลา ทำอย่างนี้นะ

t = 0:0.005:1;
f = sin(2*pi*10*t)
plot(t,f);
fn = f + 0.3*randn(size(t));
hold all
plot(t,fn)
legend('signal','signal with noise');
hold off

นั่นคือเปลี่ยนจาก hold on เป็น hold all และ สิ่งที่ได้คือ

sin3

โดยไม่ต้องมานั่งเลือกสีให้เมื่อยอีกต่อไป หลายคนรู้แล้วก็คงคิดว่าทำไมตูพึ่งรู้วะ นี่อาจจะเป็น 1 ใน 10 เรื่องง่าย ๆ ของ Matlab ที่คุณไม่รู้ก็ได้

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s