2012-05-14 29 views
9

Trong tập lệnh Octave thực thi, tôi muốn chuyển tên của tệp chứa ma trận và làm cho tải octave của gnu có thông tin tệp như ma trận. Làm thế nào để làm điều đó?Chuyển tên tệp dưới dạng đối số dòng lệnh tới tập lệnh GNU Octave

Đây là những gì kịch bản sẽ giống như

#! /usr/bin/octave -qf 

arg_list = argv() 

filename = argv{1} % Name of the file containing the matrix you want to load 

load -ascii filename % Load the information 

Các tập tin thông qua sẽ là một ma trận chứa một ma trận kích thước tùy ý nói 2x3

1 2 3 
5 7 8 

Tại dòng lệnh script nên chạy dưới dạng ./myscript mymatrixfile trong đó mymatrixfile chứa ma trận.

Đây là những gì tôi nhận được khi tôi cố gắng thực thi kịch bản chỉ viết ở trên với quãng tám

[Desktop/SCVT]$ ./octavetinker.m generators.xyz                    (05-14 10:41) 
arg_list = 

{ 
    [1,1] = generators.xyz 
} 

filename = generators.xyz 
error: load: unable to find file filename 
error: called from: 
error: ./octavetinker.m at line 7, column 1 

[Desktop/SCVT]$ 

đâu generators.xyz là file chứa ma trận Tôi cần

Trả lời

8

này nên làm việc:

#!/usr/bin/octave -qf 

arg_list = argv(); 
filename = arg_list{1}; 
load("-ascii",filename); 

khi bạn viết dòng load filename bạn đã chỉ định cho hàm tải để tải tên tệp "tên tệp". Đó là để nói, bạn đã làm điều tương đương với load('filename');.

Trong cả MATLAB và Octave, hàm "foo" theo sau là dấu cách thì từ "thanh" biểu thị thanh đó sẽ được gửi dưới dạng chuỗi thành foo. Điều này đúng ngay cả khi thanh là biến được xác định trong vùng làm việc của bạn.

+0

Mã tương ứng trong MATLAB là gì? – Celik

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