2012-12-20 16 views
5

प्रश्न: यह असमान धुरी पर एक छवि को वर्णन करने के लिए संभव है?मैटलैब में imagesc() की गैर वर्दी अक्ष

विवरण:

मैं एक छवि के रूप में एक बहुआयामी timeseries वर्णन करने के लिए की जरूरत है। लेकिन इस टाइमरीज़ का समय ग्रिड बहुत गैर-वर्दी है। यहां एक उदाहरण दिया गया है:

m = 10; 
n = 3; 
t = sort(rand(m, 1)); % non-uniform time 
values = randn(m, n); % some random values 

figure, plot(t, values); इसे अच्छी तरह से संभालता है।

लेकिन imagesc() प्रलेखन के अनुसार t(1) और t(end) के बीच एक समान समय में t धर्मान्तरित:

imagesc (एक्स, वाई, सी) सी एक छवि के रूप में प्रदर्शित करता है और x और y- की सीमा निर्दिष्ट करता है वेक्टर एक्स और वाई के साथ धुरी।

इसलिए, आदेश:

figure, imagesc(t, 1 : n, values'); colorbar; 

वर्दी समय ग्रिड पर छवि दिखाता है।

enter image description here enter image description here

संपादित करें: यह उच्च वर्दी संकल्प के साथ timeseries फिर से सैंपल लेने के लिए संभव है। लेकिन मेरी टाइमरीज़ पहले से ही बहुत बड़ी है।

उत्तर

3

समाधान

असमान रिक्ति के लिए surface का उपयोग करें।

पहले, अपने इनपुट डेटा के रूप में एक ही आकार के एक 3 डी xyz सतह बनाने के लिए:

m = 10; 
n = 3; 
t = sort(rand(m, 1)); % non-uniform time 
values = randn(m, n); % some random values 
x = repmat(t,1,n); 
y = repmat(1:n,m,1); 
z = zeros(size(y)); 

फिर, अपने मूल्यों रंग मैप।

cdata = real2rgb(values); % Where size(cdata) = [m n 3] 

अन्त में, साजिश सतह: वहाँ mathworks फ़ाइल विनिमय, real2rgb पर पोस्ट किए गए एक अच्छा उपकरण, जो आपके लिए यह कर सकते हैं। आप फैंसी भी प्राप्त कर सकते हैं और पारदर्शिता सेट कर सकते हैं।

surface(x,y,z,cdata,'EdgeColor','none','FaceColor','texturemap',... 
    'CDataMapping','direct'); 
alpha(0.3) 

enter image description here

+0

धन्यवाद, यह दिलचस्प लग रहा है। जब मैं पीसी के पास हूं तो मैं जांच करूंगा। – Serg

3

फ़ाइल विनिमय से uimagesc प्रयास करें।

enter image description here

+0

धन्यवाद नतन। यह अच्छी तरह से काम करता है, लेकिन मेरे 2GB मैट्रिक्स (timeseries) के लिए लागू नहीं।किसी बिंदु पर यह उच्च रिज़ॉल्यूशन वाले डेटा को दोहराता है। उदाहरण के लिए, 'टी' के 10 गुना अंक 26 9 अंक बन गए। – Serg

+0

यदि आपके पास 2 जीबी मैट्रिक्स है, तो क्या यह कुछ उचित (इसे imresize या इसी तरह का उपयोग करके) को फिर से नमूना देने के लिए अधिक तार्किक नहीं है? एक 1920x1200x24 बिट स्क्रीन केवल 10 एमबी की जानकारी दिखा सकती है, इसे 2 जीबी मैट्रिक्स देने के लिए क्या अच्छा है? – bla

+0

यह सही है, लेकिन ज़ूम-इन करते समय मुझे वास्तविक समय स्केल देखने की आवश्यकता है। मान लीजिए, यह आंकड़ा कुछ डेटा के 24 घंटे दिखाता है, और मुझे यह देखने की ज़रूरत है कि विशिष्ट 1 सेकंड के दौरान क्या होता है। धन्यवाद। – Serg

4

MATLAB में pcolor समारोह नहीं है। यह फ़ंक्शन ठीक वही करता है जो आप पूछ रहे हैं।

m = 10; 
n = 3; 
t = sort(rand(m, 1)); % non-uniform time 
values = randn(m, n); % some random values 
figure 
plot(t, values); 
figure 
pcolor(t, 1 : n, values'); 
colorbar; 
संबंधित मुद्दे