2010-02-20 16 views
9

Dosyaları veri işlemek için MATLAB kullanıyorum. Kullanıcıdan girdi alan bir program yazıyor ve daha sonra bunları dizine alan dizindeki belirli dosyaları buluyor. Dosyalar adlandırılır:MATLAB - dosya adı bir dizede saklanan yükleme dosyası

{name} U {oranı}

{name} bilgisayarın adını temsil eden bir dizedir. {rate} bir sayıdır. iki sorun bulunmamaktadır

%# get user to input name and rate 
NET_NAME = input('Enter the NET_NAME of the files: ', 's'); 
rate = input('Enter the rate of the files: '); 

U = strcat(NET_NAME, 'U', rate) 
load U; 

Ux = U(:,1); 
Uy = U(:,2); 

: İşte benim kod ben yaptığınızda

  1. strcat sözü söyleyen 'merhaba', 'U' ve hızı 50 sıra U saklar 'helloU2 '- {rate} tarihini uygun şekilde eklemek için strcat nasıl edinebilirim?

  2. Yükleme çizgisi - nasıl yoksayılırım U yüklenen U dizgesini yüklemek için çalışır?

Çok teşekkürler!

+4

1. filename = sprintf ("% s.% D", ad, oran)
2. fdata = load (dosya adı) – Mikhail

+0

Teşekkürler. Bu hile yaptı! – Mark

cevap

8

Yukarıdaki Mikhail'in yorumu acil sorununuzu çözüyor.

bir dosyayı seçtikten bir daha kullanıcı dostu bir yol:

Mikhail, ayrıca ilki gibi işlevleri kullanarak sayısal değerler dizgeye dönüştürerek dizeleri ve sayısal değerler birleştirebilirsiniz önerdi gibi SPRINTF kullanmanın yanı sıra
[fileName,filePath] = uigetfile('*', 'Select data file', '.'); 
if filePath==0, error('None selected!'); end 
U = load(fullfile(filePath,fileName)); 
3

NUM2STR ve INT2STR: U yılında iple

U = [NET_NAME 'U' int2str(rate)]; 
data = load(U); %# Loads a .mat file with the name in U 

bir konu dosyası MATLAB path veya şimdiki korkunç olmak zorunda olmasıdır ctory. Aksi takdirde, değişken NET_NAME böyle bir tam veya kısmi yolunu içermelidir:

o dosyaya tam ve doğru yola sahip olmak için yardımcı olduğu için UIGETFILE idealdir kullanmanın
NET_NAME = 'C:\My Documents\MATLAB\name'; %# A complete path 
NET_NAME = 'data\name'; %# data is a folder in the current directory 

Amro's suggestion.

İlgili konular