9

MATLAB を使用してファイルのデータを処理しています。ユーザーからの入力を受け取り、それらをグラフ化するディレクトリ内の特定のファイルを見つけるプログラムを作成しています。ファイルの名前は次のとおりです。

{name}U{rate}

{name} は、コンピューターの名前を表す文字列です。{rate} は数値です。これが私のコードです:

%# 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);

現在、次の 2 つの問題があります。

  1. strcat「hello」、「U」、rate が 50 の場合、U は「helloU2」を格納します - どうすれば {rate} を適切に追加できますstrcatか?

  2. ロード行 - ロードが U に格納されている文字列をロードしようとするように、U を逆参照するにはどうすればよいですか?

どうもありがとう!

4

2 に答える 2

8

上記のミハイルのコメントは、当面の問題を解決します。

ファイルを選択するよりユーザーフレンドリーな方法:

[fileName,filePath] = uigetfile('*', 'Select data file', '.');
if filePath==0, error('None selected!'); end
U = load( fullfile(filePath,fileName) );
于 2010-02-20T23:31:29.143 に答える
3

Mikhail が提案したようにSPRINTFを使用することに加えて、最初にNUM2STRINT2STRなどの関数を使用して数値を文字列に変換することにより、文字列と数値を結合することもできます。

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

文字列の 1 つの問題Uは、ファイルがMATLAB パス上または現在のディレクトリにある必要があることです。それ以外の場合、変数NET_NAMEには次のように完全パスまたは部分パスを含める必要があります。

NET_NAME = 'C:\My Documents\MATLAB\name';  %# A complete path
NET_NAME = 'data\name';  %# data is a folder in the current directory

UIGETFILEを使用するという Amro の提案は、ファイルへの完全で正しいパスを確保するのに役立つため、理想的です。

于 2010-02-21T03:03:04.217 に答える