• 締切済み

【再】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 行目ファイルが見つかりません

みんなの回答

  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.3

#2です。 訂正と追記です。 訂正 × xy = csvread(char(filename)); ○ xy = csvread(char(filename1)); 追記 おそらく、 fig_num = set_Dialog(2,1); もdouble型として受け取れていないと思います。

c-beginer
質問者

お礼

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

  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.2

これはおそらく、inputdlg関数の戻り値がcell型だからだと思います。 対処方法としては、以下の2つが考えられます。 (1)filename1 = strcat(set_Dialog{1,:},'_1.csv'); (2)xy = csvread(char(filename)); また、任意のフォルダから任意のファイルを選択するのであれば、uigetfile関数を使う方が良いと思います。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>>>xy = csvread(filename); >??? エラー ==> csvread の 32 行目ファイル名は文字列でなければなりません。 filename1が正しいですか? 最後の1が抜け落ちているように見えます。 >>>xy = csvread('filename2'); >??? エラー ==> csvread の 38 行目ファイルが見つかりません 「filename2」という名前のファイルが見つからない、といっています。 ''で囲む必要があるのでしょうか?

c-beginer
質問者

補足

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

関連するQ&A

専門家に質問してみよう