MATLAB - Đầu ra dữ liệu

Xuất (hoặc xuất) dữ liệu trong MATLAB có nghĩa là ghi thành tệp. MATLAB cho phép bạn sử dụng dữ liệu của mình trong một ứng dụng khác có chức năng đọc các tệp ASCII. Đối với điều này, MATLAB cung cấp một số tùy chọn xuất dữ liệu.

Bạn có thể tạo các loại tệp sau:

  • Tệp dữ liệu ASCII hình chữ nhật, được phân tách từ một mảng.

  • Tệp nhật ký (hoặc nhật ký) của các lần nhấn phím và kết quả đầu ra.

  • Tệp ASCII chuyên biệt sử dụng các hàm cấp thấp như fprintf.

  • Tệp MEX để truy cập quy trình C / C ++ hoặc Fortran của bạn để ghi vào một định dạng tệp văn bản cụ thể.

Ngoài ra, bạn cũng có thể xuất dữ liệu sang bảng tính.

Có hai cách để xuất một mảng số dưới dạng tệp dữ liệu ASCII được phân tách -

  • Sử dụng save chức năng và chỉ định -ascii vòng loại

  • Sử dụng dlmwrite chức năng

Cú pháp để sử dụng hàm lưu là:

save my_data.out num_array -ascii

trong đó, my_data.out là tệp dữ liệu ASCII được phân tách được tạo, num_array là một mảng số và−ascii là định nghĩa.

Cú pháp để sử dụng dlmwrite chức năng là -

dlmwrite('my_data.out', num_array, 'dlm_char')

trong đó, my_data.out là tệp dữ liệu ASCII được phân tách được tạo, num_array là một mảng số và dlm_char là ký tự phân tách.

Thí dụ

Ví dụ sau đây minh họa khái niệm. Tạo tệp kịch bản và nhập mã sau:

num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0];
save array_data1.out num_array -ascii;
type array_data1.out
dlmwrite('array_data2.out', num_array, ' ');
type array_data2.out

Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:

1.0000000e+00   2.0000000e+00   3.0000000e+00   4.0000000e+00
   4.0000000e+00   5.0000000e+00   6.0000000e+00   7.0000000e+00
   7.0000000e+00   8.0000000e+00   9.0000000e+00   0.0000000e+00

1 2 3 4
4 5 6 7
7 8 9 0

Xin lưu ý rằng lệnh save -ascii và hàm dlmwrite không hoạt động với mảng ô làm đầu vào. Để tạo tệp ASCII được phân tách từ nội dung của một mảng ô, bạn có thể

  • Hoặc, chuyển đổi mảng ô thành ma trận bằng cách sử dụng cell2mat chức năng

  • Hoặc xuất mảng ô bằng các hàm I / O tệp cấp thấp.

Nếu bạn sử dụng save hàm ghi một mảng ký tự vào tệp ASCII, nó ghi tương đương ASCII của các ký tự vào tệp.

Ví dụ: chúng ta hãy viết từ 'xin chào' vào một tệp -

h = 'hello';
save textdata.out h -ascii
type textdata.out

MATLAB thực hiện các câu lệnh trên và hiển thị kết quả sau. là các ký tự của chuỗi 'xin chào' ở định dạng ASCII 8 chữ số.

1.0400000e+02   1.0100000e+02   1.0800000e+02   1.0800000e+02   1.1100000e+02

Ghi vào tệp nhật ký

Tệp nhật ký là nhật ký hoạt động của phiên MATLAB của bạn. Chức năng nhật ký tạo một bản sao chính xác của phiên của bạn trong một tệp đĩa, ngoại trừ đồ họa.

Để bật chức năng nhật ký, hãy nhập -

diary

Theo tùy chọn, bạn có thể đặt tên của tệp nhật ký, giả sử -

diary logdata.out

Để tắt chức năng nhật ký -

diary off

Bạn có thể mở tệp nhật ký trong trình soạn thảo văn bản.

Xuất dữ liệu sang tệp dữ liệu văn bản với I / O cấp thấp

Cho đến nay, chúng tôi đã xuất mảng số. Tuy nhiên, bạn có thể cần tạo các tệp văn bản khác, bao gồm kết hợp dữ liệu số và ký tự, tệp đầu ra không phải hình chữ nhật hoặc tệp có lược đồ mã hóa không phải ASCII. Đối với những mục đích này, MATLAB cung cấp mức thấpfprintf chức năng.

Như trong các hoạt động tệp I / O cấp thấp, trước khi xuất, bạn cần mở hoặc tạo tệp bằng fopenvà lấy mã định danh tệp. Theo mặc định, fopen mở một tệp để truy cập chỉ đọc. Bạn nên chỉ định quyền để viết hoặc nối thêm, chẳng hạn như 'w' hoặc 'a'.

Sau khi xử lý tệp, bạn cần đóng tệp bằng fclose(fid) chức năng.

Ví dụ sau thể hiện khái niệm -

Thí dụ

Tạo một tệp script và nhập mã sau vào đó:

% create a matrix y, with two rows
x = 0:10:100;
y = [x; log(x)];
 
% open a file for writing
fid = fopen('logtable.txt', 'w');
 
% Table Header
fprintf(fid, 'Log     Function\n\n');
 
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f    %f\n', y);
fclose(fid);

% display the file created
type logtable.txt

Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:

Log         Function

0.000000    -Inf
10.000000    2.302585
20.000000    2.995732
30.000000    3.401197
40.000000    3.688879
50.000000    3.912023
60.000000    4.094345
70.000000    4.248495
80.000000    4.382027
90.000000    4.499810
100.000000    4.605170