2012-04-02 39 views
9

Tôi cần tải dữ liệu thử nghiệm vào scicoslab, bản sao (được thiết kế khá kém) của scilab sẽ xảy ra để hỗ trợ mô hình hóa đồ họa. Tài liệu trên web khá kém, nhưng nó tương đối hợp lý với scilaboctave.Truy cập biến theo tên chuỗi

Dữ liệu tôi cần xử lý được chứa vào một số lượng tệp văn bản nhất định: Data_005, Data_010,…, Data_100. Mỗi người trong số họ có thể được tải bằng cách sử dụng cờ -ascii cho lệnh loadmatfile.

Sự cố xuất phát từ thực tế là loadmatfile("foo", "-ascii") tải tệp foo.mat thành biến có tên foo. Để chu kỳ trên các tập tin dữ liệu, tôi sẽ cần phải làm điều gì đó như:

for i = [5:5:100] 
    name = sprintf("Data_%02d", i); 
    loadmatfile(name, "-ascii"); 
    x = read_var_from_name(name); 
    do_something(x); 
end 

nơi những gì tôi tìm kiếm một BUILTIN read_var_from_name mà sẽ cho phép tôi để truy cập vào bảng biểu tượng nội bộ của chuỗi là.

Bạn có biết liệu có tồn tại chức năng tương tự không?

Ghi chú:

  1. Không có cách nào của trọng hành vi này nếu tập tin bạn đang ở trong ascii định dạng;
  2. Trong giai đoạn này tôi cũng có thể sử dụng octave (không có mô hình đồ họa được tham gia), mặc dù nó hoạt động theo cùng một cách.

Trả lời

9
>> foo = 3.14; name = 'foo'; eval(name) 

foo = 

    3.1400 

Các công trình trên trong MATLAB, và tài liệu Scilab cho biết nó cũng có chức năng eval. Tuy nhiên, không chắc chắn nếu tôi hiểu bạn một cách chính xác.

+0

Xác nhận để được làm việc theo quãng tám và scicoslab – Dacav

9

@ arne.b có câu trả lời hay.

Trong trường hợp của bạn, bạn cũng có thể làm điều đó trong matlab:

a=load('filename.mat') 
x=a.('variable_name') 
+1

Chỉ muốn nói (như ai đó từ một nền tảng lập trình ở đâu 'eval() 'được coi là ác) cảm ơn vì đã chỉ ra điều này; Tôi không biết cú pháp này tồn tại! – miken32

+0

@ miken32 'eval' thực sự là ác. – Oli

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