2011-12-22 11 views
5

Tôi đã viết một ứng dụng GUI sau khi thực hiện một số phân tích trên tập dữ liệu lớn, nó cung cấp khả năng một số tùy chọn vẽ trên dữ liệu (thông qua trình đơn bật lên).Cửa hàng MATLAB lô bên trong một biến và sử dụng lại nó

Vì vậy, ngay bây giờ mọi ô được tính khi đang bay khi được chọn trong menu bật lên. Điều này không hiệu quả và mất thời gian vì vậy tôi muốn tính toán tất cả các ô này một lần, sau đó lưu trữ chúng bằng cách nào đó trong các biến và có thể gán cho mỗi người trong số chúng để xử lý các trục gui.

Về cơ bản, tôi muốn có một âm mưu của loại h = cốt truyện ([1 2 3]) được lưu trữ trong biến (không hình dung) và có thể hình dung nó theo yêu cầu sau này. Tôi đã thử gán các trục xử lý cho ô điều khiển lô, ví dụ:

h=plot([1 2 3]); 
handles.plottingscreen_axe=h; 

... nhưng nó không hiển thị gì cả. Để đơn giản hóa vấn đề tôi đã thử với dữ liệu thử nghiệm trên thiết bị đầu cuối để chỉ đơn giản chỉ định một hình xử lý khác để bằng cách nào đó kết xuất hình ảnh với hình khác nhưng không có gì đang hoạt động, ví dụ:

h=plot([1 2 3]); 
f=figure; 
f=h; 

... nhưng tôi không thể trực quan hóa cốt truyện của h để tìm f.

Rõ ràng là tôi không có kinh nghiệm với xử lý đồ họa vì vậy tôi tưởng tượng rằng đây là một cái gì đó đơn giản cho một ai đó. Tôi đã không thể tìm thấy bất kỳ tài liệu liên quan về nó, tất cả mọi người đề nghị chỉ cần thực hiện một chức năng mà thay thế tất cả mọi thứ nhưng điều này là chính xác những gì tôi đang cố gắng để tránh.

Bất kỳ trợ giúp nào được đánh giá cao và tôi xin lỗi trong trường hợp câu hỏi của tôi là về điều gì đó quá cơ bản.

Trả lời

4
figure; 
ah = axes; 
hold(ah,'on'); 
%Axes must have hold on or lh(1) will become invalid after lh(2) is created 
lh(1) = plot(ah,[1 2 3],[1 2 3],'r','visible','off'); 
lh(2) = plot(ah,[1 2 3],[3 2 1],'b','visible','off'); 

này sẽ bật Line 1 (màu đỏ)

set(lh(1),'visible','on');set(lh(2),'visible','off') 

này sẽ bật Line 2 (màu xanh)

set(lh(1),'visible','off');set(lh(2),'visible','on') 

Trong GUI của bạn, bạn sẽ cần một số loại gọi lại để chuyển trạng thái bật/tắt hiển thị ra khỏi tất cả các tay cầm dòng của bạn. Lưu ý: Nếu đây là những tập dữ liệu rất lớn và bạn có nhiều dòng, nó có thể ăn nhiều bộ nhớ.

1

Một giải pháp mà tôi có thể nghĩ đến là lưu trữ các số liệu trên đĩa cứng của bạn bằng cách sử dụng chức năng saveas và sau đó nhớ lại chúng bằng tải.

dụ:

>> plot(1:4,5:8) 
>> saveas(gcf,'test.fig') 
>> close all 
>> open('test.fig') 
1

Tôi nghĩ rằng có một giải pháp khác.

Bạn có thể tính toán trước tất cả các lô, và sau đó chỉ cần thiết lập các 'Visible' tài sản để 'true' hoặc 'false'

+0

@AeroEngy đã mô tả nó rất tốt, nhân tiện. –