こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

matlabに関する質問です.

タイトルの通りmatlabに関する質問です.

matlabの組み込み関数ndgridにつきまして,[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn)のように入力をx1,x2,...,xnと増加させると出力もX1,X2,...,Xnと増加するのですが,任意の入力数(セル配列で入力)に対して出力側も任意の出力数に対応させたいのですが
[Xn_cell{:}] = ndgrid(xn_cell{:})としてもエラーが出てしまい上手く出来ません.
何か良い方法はありませんでしょうか.

ご教授の程,宜しくお願いいたします.

投稿日時 - 2017-10-13 17:32:54

QNo.9385466

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

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

投稿日時 - 2017-10-14 11:47:17