電子書籍の厳選無料作品が豊富!

前回質問させて頂いたのですが、意味が分からないとの指摘を
頂きましたので、再度質問させていただきます。
何度も申し訳ないですが、ご存知の方がいらっしゃいましたら教えて下さい。

私がやりたいのは、CSV形式のファイル名を入力すると
MATLABさんが入力されたファイル名を読み取って
グラフを表示するといったことがしたいのです。
(フォルダ内にたくさんあるCSVファイルから、好きなのを選びたい)
そのため、私はcsvreadの引数であるファイル名を変数として
みましたが、文字列じゃないとダメだと怒られます。
下記に私の書いたものをそのまま載せますので、ダメな点を指摘していただければと思います。

<<Mファイル>>
Prompt = {'対象文字','Figure Number '};
Title = 'Dialog';
Def={'A','1'};
set_Dialog = inputdlg(Prompt,Title,1,Def);
filename1 = strcat(set_Dialog(1,1),'_1.csv');
filename2 = strcat(set_Dialog(1,1),'_2.csv');
fig_num = set_Dialog(2,1);

↓ここからわかりません。↓
>>xy = csvread(filename);
??? エラー ==> csvread の 32 行目ファイル名は文字列でなければなりません。

>>xy = csvread('filename2');
??? エラー ==> csvread の 38 行目ファイルが見つかりません

A 回答 (3件)

#2です。



訂正と追記です。

訂正
× xy = csvread(char(filename));
○ xy = csvread(char(filename1));

追記
おそらく、
fig_num = set_Dialog(2,1);
もdouble型として受け取れていないと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
できましたぁ!!!
おっしゃられる通り、Cell型でした。
自然にchar型になると思ってました。
本当にありがとうございます。

お礼日時:2008/03/11 00:57

これはおそらく、inputdlg関数の戻り値がcell型だからだと思います。


対処方法としては、以下の2つが考えられます。

(1)filename1 = strcat(set_Dialog{1,:},'_1.csv');
(2)xy = csvread(char(filename));

また、任意のフォルダから任意のファイルを選択するのであれば、uigetfile関数を使う方が良いと思います。
    • good
    • 1

>>>xy = csvread(filename);


>??? エラー ==> csvread の 32 行目ファイル名は文字列でなければなりません。

filename1が正しいですか?
最後の1が抜け落ちているように見えます。

>>>xy = csvread('filename2');
>??? エラー ==> csvread の 38 行目ファイルが見つかりません

「filename2」という名前のファイルが見つからない、といっています。
''で囲む必要があるのでしょうか?

この回答への補足

御回答ありがとうございます。
>最後の1が抜け落ちているように見えます。
記載中に消してしまったようです。
実際は、下記のように書いていますが同様のエラーがでます。
>>xy = csvread(filename1);
??? エラー ==> csvread の 32 行目ファイル名は文字列でなければなりません。

>>>xy = csvread('filename2');
これは、文字列文字列とうるさいので、文字列で書いて見たものです。
当たり前のエラーですね。。。
実際は、filename2の中にある、'A_2.csv'を読み込みたいのですが。

補足日時:2008/03/10 22:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!