2010-09-09 21 views
9

Tôi viết một tập lệnh trong MATLAB, trong đó tạo ra các số liệu ra một tập hợp dữ liệu.Hình nhân bản trong Matlab - với các thuộc tính và dữ liệu

Các số liệu được cho là khá giống với định dạng và mỗi hình ảnh phải hiển thị một tập hợp dữ liệu (đó là biểu đồ được nhúng trong một miền 3D). Mỗi hình trong số này là cần thiết để hiển thị một tập hợp các hạt trong miền 3D đó.

Vì vậy, tôi muốn tạo hình đầu tiên, sau đó tạo một số bản sao của nó và đặt vào bộ dữ liệu. Tuy nhiên, tôi không biết, làm thế nào tôi có thể tạo ra nhân bản của một con số trong Matlab một cách đơn giản.

Bạn có biết, làm thế nào tôi có thể sao chép số liệu?

Tài liệu trực tuyến không hữu ích. Cảm ơn nhiều!

Trả lời

14

Chức năng tích hợp của MATLAB copyobj cũng sẽ hoạt động. Dưới đây là một ví dụ:

peaks; 
f2=copyobj(gcf,0); 
+1

+1: Quên về COPYOBJ. – gnovice

3

Bạn có thể đặt mã bạn sử dụng để tạo hình cơ sở của bạn thành một hàm, sau đó gọi hàm đó nhiều lần để tạo nhiều bản sao của hình cơ sở của bạn. Bạn sẽ muốn trả về graphics handles cho những con số đó (và có thể là trục của chúng) làm đầu ra từ hàm để sửa đổi từng phần với một tập hợp dữ liệu được vẽ khác nhau. Ví dụ: chức năng này tạo hình 500 x 500 pixel nằm ở bên trái và dưới cùng của màn hình với nền đỏ và một trục với một tập hợp dữ liệu đầu vào đã cho trên đó:

function [hFigure,hAxes] = make_my_figure(dataX,dataY) 
    hFigure = figure('Color','r','Position',[100 100 500 500]); %# Make figure 
    hAxes = axes('Parent',hFigure);        %# Make axes 
    plot(hAxes,dataX,dataY); %# Plot the data 
    hold(hAxes,'on');   %# Subsequent plots won't replace existing data 
end 

với chức năng trên lưu vào một m-file trên MATLAB path của bạn, bạn có thể làm ba bản sao của con số này bằng cách gọi make_my_figure ba lần với cùng một tập hợp dữ liệu đầu vào và lưu trữ xử lý nó sẽ trả về trong các biến riêng biệt:

x = rand(1,100); 
y = rand(1,100); 
[hFigure1,hAxes1] = make_my_figure(x,y); 
[hFigure2,hAxes2] = make_my_figure(x,y); 
[hFigure3,hAxes3] = make_my_figure(x,y); 

Và bạn có thể thêm dữ liệu vào trục của hình thứ hai như sau:

plot(hAxes2,rand(1,100),rand(1,100)); 
2

Một cách thuận tiện để tạo ra một chức năng mà bộ tất cả các thông số như vậy mà con số (như trong bài @gnovice 's) sẽ xem xét vừa phải là để tạo ra các con số đầu tiên với tất cả các dữ liệu (bao gồm cả các điểm 3D) và tất cả các định dạng, và sau đó chọn từ menu FILE lệnh GENERATE M-FILE... (xem hướng dẫn được liên kết tại đây).

Điều này tạo ra một chức năng mà bạn có thể lưu trên đường dẫn Matlab và sau đó bạn có thể gọi bằng đầu vào mới để tạo bản sao chính xác của hình đầu tiên với dữ liệu mới.

Các vấn đề liên quan