- 締切済み
【再】MATLABのcsvreadについて
前回質問させて頂いたのですが、意味が分からないとの指摘を 頂きましたので、再度質問させていただきます。 何度も申し訳ないですが、ご存知の方がいらっしゃいましたら教えて下さい。 私がやりたいのは、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 行目ファイルが見つかりません
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- sgwjn
- ベストアンサー率70% (47/67)
#2です。 訂正と追記です。 訂正 × xy = csvread(char(filename)); ○ xy = csvread(char(filename1)); 追記 おそらく、 fig_num = set_Dialog(2,1); もdouble型として受け取れていないと思います。
- sgwjn
- ベストアンサー率70% (47/67)
これはおそらく、inputdlg関数の戻り値がcell型だからだと思います。 対処方法としては、以下の2つが考えられます。 (1)filename1 = strcat(set_Dialog{1,:},'_1.csv'); (2)xy = csvread(char(filename)); また、任意のフォルダから任意のファイルを選択するのであれば、uigetfile関数を使う方が良いと思います。
- asuncion
- ベストアンサー率33% (2127/6289)
>>>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'を読み込みたいのですが。
お礼
ありがとうございます。 できましたぁ!!! おっしゃられる通り、Cell型でした。 自然にchar型になると思ってました。 本当にありがとうございます。