• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MATLABのアップグレード問題)

MATLABアップグレード問題の修正方法とは?

このQ&Aのポイント
  • MATLAB初心者の方がMATLAB6.1から7.01にアップグレードした際に、特定のコードが動かないエラーが発生します。
  • 原因はMATLABのバージョンアップによるセル配列の連結方法の変更です。
  • 修正方法は、1回目のループの場合は連結しないようにし、2回目以降のループでは連結するように修正することです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Kules
  • ベストアンサー率47% (292/619)
回答No.1

間違っていると思います。 Conversion to cell from char is not possible というのは、 「セル配列と文字列は連結できねーんだよ」 というエラーです。 outはセル配列ですが、 helper([d '/' files{i}], pat(2:end))が文字列を返しているため、 いわば[{},'ABC']みたいな配列を作る形になってしまっているのだと思います。 これってもともとできるんですかね?意外と出来るのかも… もしこれが6.1から7.01に移行する時に出来なくなってしまったってことでしょうか? おそらくループ数のサイズを持ったセル配列を作ろうとしているのだと思いますが、 変更後の動作を見ると、ループの前にout={};としたのが意味なくなってます(M-Lintが警告出しませんか?ifの中だから警告出さないのかな?) 現在の動作は ・outを空のセル配列にする ・i=1でoutにhelper([d '/' files{i}], pat(2:end))を代入する(この時点でhelper([d '/' files{i}], pat(2:end))が文字列を返す関数なのであれば、outは文字列になります) ・iが2以上の時ouを連結する という動作なので、おそらく最終的にはoutはただの長い文字列になります。 それならループに入る前にfiel数×1のセル配列を作っておいて、 ループごとにout{i}=helper([d '/' files{i}], pat(2:end)); にしたらいいと思われます。 参考になれば幸いです。

mega55_531-mlb
質問者

お礼

「Kules」様、ご返信ありがとうございます。 ご指摘の方法で解決できました。 ループに入る前にfiel数×1のセル配列を作っておいて、 ループごとにout{i}=helper([d '/' files{i}], pat(2:end)); ※私が6.1で動作確認をしたわけではありませんが、動作実績はあったと聞いています。 大変助かりました。 ありがとうございました。

関連するQ&A