2010-04-16 18 views
7

Tôi đã thử help fopen,Fopen ('text.txt', 'wt') có nghĩa là gì trong MATLAB?

nhưng không có giải thích ý nghĩa của phương thức t.

+0

Tài liệu trực tuyến (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/fopen.html) có nhiều giải thích hơn - quét xuống phần "quyền". – mtrw

+0

Vì vậy, chế độ văn bản chỉ ảnh hưởng đến trong cửa sổ? – user198729

Trả lời

1

bị đánh cắp từ các tài liệu PHP [vâng, đây là một ngôn ngữ khác nhau, nhưng chúng ta đang nói về các thông số chế độ File, vì vậy nó không nên có bất kỳ khác nhau]

Windows cung cấp một bản dịch text-mode cờ ('t') sẽ minh bạch dịch \ n thành \ r \ n khi làm việc với tệp. Ngược lại, bạn cũng có thể sử dụng 'b' để buộc chế độ nhị phân, trong đó sẽ không dịch dữ liệu của bạn. Để sử dụng các cờ này, hãy chỉ định ký tự 'b' hoặc 't' làm ký tự cuối cùng của thông số chế độ.

....

Một lần nữa, cho tính di động, nó cũng là khuyên bạn nên viết lại mã có sử dụng hoặc dựa vào các 't' chế độ để nó sử dụng chính xác dòng kết thúc và chế độ 'b' thay thế.

http://php.net/manual/en/function.fopen.php

+0

Không hoàn toàn - MATLAB coi chế độ văn bản là "các dòng mới của dải từ đầu vào". Xem http://www.oit.uci.edu/dcslib/matlab/matlab-v53/help/techdoc/ref/fopen.html – Tim

+0

Vì vậy, nó có nghĩa là 'văn bản' hoặc' dịch', cái nào? – user198729

+0

Nó có nghĩa là chế độ 'văn bản'. – Tim

2

Nó tương tự như PHP và các ngôn ngữ khác trong đó t không đại diện cho chế độ "văn bản"; tuy nhiên, ý nghĩa có một chút khác biệt.

Trong MATLAB, nếu bạn mở tệp ở chế độ văn bản, nó sẽ tách các đầu dòng khỏi đầu vào trước khi các dòng được xử lý hoặc thao tác, sau đó readds chúng cho đầu ra; chế độ nhị phân, được biểu thị bằng một số b, không thực hiện loại bỏ dòng mới như vậy.

Xem fopen reference.

+0

Bạn có thể xây dựng nó như thế nào "dải newlines từ đầu vào"? Tôi nghĩ rằng nó sẽ gây ra lỗi bằng cách nối đuôi và đầu với nhau. – user198729

+0

Chế độ văn bản sẽ gây ra bất kỳ phiên bản '\ r \ n' nào trên hệ thống Windows được thay thế bằng chỉ đọc' \ n' và ngược lại xảy ra cho thao tác ghi. Các tài liệu tôi cung cấp cho tất cả những điều này; những thứ mà @mtrw cung cấp chỉ định rõ ràng điều này. – Tim

+0

Chế độ văn bản chỉ hoạt động trong các cửa sổ? – user198729

5

Từ các tài liệu (R2009a, Windows):

Trên hệ thống UNIX, chế độ nhị phân và văn bản đều giống nhau.

Trên hệ thống Windows, chế độ nhị phân và văn bản khác nhau. Nếu bạn không chắc chắn chế độ nào phù hợp nhất với tệp của bạn, hãy sử dụng chế độ nhị phân . Theo mặc định, fopen mở các tệp để truy cập đọc nhị phân.

Ở chế độ nhị phân, hãy đọc và viết quy trình hoạt động tất cả các ký tự trong theo cách tương tự. Trong chế độ văn bản:

  • đọc hoạt động mà gặp phải một trở về vận chuyển theo sau là một ký tự xuống dòng loại bỏ trở về vận chuyển từ đầu vào.

  • Viết thao tác chèn dấu xuống dòng trước bất kỳ ký tự dòng mới nào trong đầu vào.

Phiên bản UNIX (R2009b) tiếp tục bổ sung (trong doc fopen):

Đối với hiệu suất tốt hơn, không sử dụng chế độ văn bản.

2

từ matlab fopen documentation

Để mở tập tin trong chế độ văn bản, đính kèm chữ 't' cho phép, ví dụ như 'rt' hoặc 'wt +'. Để có hiệu suất tốt hơn, không sử dụng chế độ văn bản. Sau đây áp dụng trên các hệ thống Windows, trong chế độ văn bản:

  • đọc hoạt động mà gặp phải một trở về vận chuyển theo sau là một ký tự xuống dòng ('\ r \ n') loại bỏ trở về vận chuyển từ đầu vào.

  • Thao tác viết chèn dấu xuống dòng trước bất kỳ ký tự dòng mới nào trong đầu ra.

xử lý bổ sung này là không cần thiết đối với hầu hết các trường hợp. Tất cả các chức năng nhập MATLAB, và hầu hết các trình soạn thảo văn bản (bao gồm Microsoft Word và WordPad), nhận ra cả '\ r \ n' và '\ n' làm chuỗi mới. Tuy nhiên, khi bạn tạo tệp để sử dụng trong Microsoft Notepad, hãy kết thúc mỗi dòng bằng '\ r \ n'. Ví dụ, xem fprintf.