2012-12-20 29 views
5

Câu hỏi: có thể minh họa hình ảnh trên trục không đồng nhất không?Trục không đồng nhất của imagesc() trong Matlab

chi tiết:

tôi cần để minh họa một chuỗi thời gian đa chiều như một hình ảnh. Nhưng lưới thời gian của thời gian này rất không đồng đều. Dưới đây là ví dụ:

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

figure, plot(t, values); xử lý tốt.

Nhưng imagesc() chuyển đổi t vào thời gian thống nhất giữa t(1)t(end) theo tài liệu:

imagesc (x, y, C) sẽ hiển thị C như một hình ảnh và xác định các giới hạn của x và y- trục với vectơ x và y.

Do đó, lệnh:

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

minh họa hình ảnh trên lưới thời gian thống nhất.

enter image description here enter image description here

Edit: Có thể tái lấy mẫu chuỗi thời gian với độ phân giải thống nhất cao hơn. Nhưng thời gian của tôi đã rất lớn.

Trả lời

3

Giải pháp

Hãy thử sử dụng surface cho khoảng cách không đồng nhất.

Đầu tiên, tạo một bề mặt xyz 3D có cùng kích thước như dữ liệu đầu vào của bạn:

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)); 

Sau đó, colormap giá trị của bạn. Có một công cụ tốt đẹp được đưa lên sàn giao dịch MathWorks tập tin, real2rgb, có thể làm điều này cho bạn:

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

Cuối cùng, âm mưu bề mặt. Bạn thậm chí có thể được ưa thích và thiết lập sự minh bạch.

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

enter image description here

+0

cảm ơn bạn, có vẻ thú vị. Tôi sẽ kiểm tra khi tôi ở gần PC. – Serg

3

thử uimagesc từ việc trao đổi file.

enter image description here

+0

Cảm ơn Natan. Nó hoạt động tốt, nhưng không áp dụng cho ma trận 2GB của tôi (khoảng thời gian).Tại một số điểm nó resamples dữ liệu với độ phân giải cao hơn. Ví dụ, 10 điểm của 't' đã trở thành 269 điểm. – Serg

+0

Nếu bạn có ma trận 2GB, không phải là hợp lý hơn khi lấy mẫu lại cho một cái gì đó hợp lý (sử dụng imresize hoặc tương tự)? Màn hình bit 1920x1200x24 chỉ có thể hiển thị khoảng 10MB thông tin, điều gì là tốt để cung cấp cho nó một ma trận 2GB? – bla

+0

Đúng, nhưng tôi cần xem quy mô thời gian thực khi phóng to. Giả sử, hình minh họa 24 giờ của một số dữ liệu và tôi cần xem điều gì xảy ra trong 1 giây cụ thể. Cảm ơn. – Serg

4

pcolor hàm trong MATLAB. Hàm này thực hiện chính xác những gì bạn đang yêu cầu.

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; 
Các vấn đề liên quan