- 締切済み
matlabに関する質問です.
タイトルの通りmatlabに関する質問です. matlabの組み込み関数ndgridにつきまして,[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn)のように入力をx1,x2,...,xnと増加させると出力もX1,X2,...,Xnと増加するのですが,任意の入力数(セル配列で入力)に対して出力側も任意の出力数に対応させたいのですが [Xn_cell{:}] = ndgrid(xn_cell{:})としてもエラーが出てしまい上手く出来ません. 何か良い方法はありませんでしょうか. ご教授の程,宜しくお願いいたします.
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- wek00
- ベストアンサー率61% (91/147)
eval 系を使うとか。ndgrid の文と戻り値をセル配列にまとめる文を実行時に生成します。美しくないですが、望み通りに動くものは作れるはずです。 参考: eval テキストの MATLAB 式を実行 https://jp.mathworks.com/help/matlab/ref/eval.html 関数 eval の代替方法 ┗関数 eval の使用が好ましくない理由 https://jp.mathworks.com/help/matlab/matlab_prog/string-evaluation.html evalin 指定したワークスペースで MATLAB 式を実行 ┗出力引数リストを使用する https://jp.mathworks.com/help/matlab/ref/evalin.html eval は最後の手段です。もっといい方法があっても良さそうですし 質問にあるコードでもいけそうな感じに思えます。 一応確認ですが > エラーが出てしまい とのことですが、どういうエラーなのでしょう。 要素数が同じ Xn_cell を用意してある場合はうまくいったりしませんか? 参考: 入力引数と出力引数 - 可変長引数リストのサポート、引数のチェック https://jp.mathworks.com/help/matlab/input-and-output-arguments.html 可変長引数リストのコード生成 https://jp.mathworks.com/help/simulink/ug/specifying-variable-numbers-of-arguments.html matlabで関数の行列出力を配列にまとめる - Qiita https://qiita.com/_s_ueda_/items/b2eba0237eaa626ef639 ┣文六メモ: matlab: セル配列の参照法とその周辺 ┃http://bun6memo.blogspot.jp/2007/03/matlab_22.html ┣文六メモ: matlab: セル配列で困っている人へ ┃http://bun6memo.blogspot.jp/2013/06/matlab.html ┗【matlab】複数の出力変数を受ける方法 - 俺言語。 http://oregengo.hatenablog.com/entry/2015/07/24/%25e3%2580%2590matlab%25e3%2580%2591%25e8%25a4%2587%25e6%2595%25b0%25e3%2581%25ae%25e5%2587%25ba%25e5%258a%259b%25e5%25a4%2589%25e6%2595%25b0%25e3%2582%2592%25e5%258f%2597%25e3%2581%2591%25e3%2582%258b