• 締切済み

matlabに関する質問です.

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

みんなの回答

  • wek00
  • ベストアンサー率62% (90/145)
回答No.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

関連するQ&A

  • Matlabで自作関数をオーバーロード

    Matlabの組み込み関数の中には、引数の数や戻り値の数に応じて異なる作用をするものが沢山あると思います。 例えば組み込みのmax関数だと y=max(x) ならxの第一次元にについての最大値を返しますし、 [y,i]=max(x) なら、さらに i に最大値のindexを代入、 一方 x=max(x,y) ならx,yの各要素について大きい方を取った行列を、 x=max(x,[],d) ならxのd次元についての最大化をしてくれます。 質問ですが、そういう関数を自分で作ることは可能ですか? function [z,w]=f(x,y) という風に関数を定義してしまうと、たとえyを関数中で利用しない場合でも、引数yを指定しなければエラーになってしまいます。同じ関数名でも呼び方に応じて異なった操作をさせることはできないでしょうか?

  • 論理回路

    2n変数論理関数 fn(x1,x2,...,xn,y1,y2,...,yn)={ 1 N(x1,x2,...,xn)>N(y1,y2,...,yn)の時                 0 その以外 について、以下の問に答えよ。ここで、Nは入力を2進数とみなしたときの数を値として持つ関数であり、N(x1,x2,...,xn)=Σ(i=1~n)xi2^n-iと表すことができる。 問 任意のn>=2に対して     fn(x1,x2,...,xn,y1,y2,...,yn)= x1・y1(bar) + (x1+y1(bar))・fn-1(x2,...,xn,y2,...yn) が成り立つことを示せ。ただし、(bar)が論理否定、・が論理積、+は論理和を表す という問なのですが、どのように証明をすればよいのでしょうか? お願いします。

  • 論理関数の証明の問題です。

    (1) F(x1,x2,...,xn)を任意の論理関数とし F(x1,x2,...,xn) = x1'・F(0,x2,...,xn) + x1・F(1,x2,...,xn) を証明せよ。(' は反転の意) (2) 上式を踏まえて次式を証明せよ。 F(x1,x2,...,xn) = (x1' + F(1,x2,...,xn)) ・ (x1 + F(0,x2,...,xn)) 以上のような問題です。 どなたかお教え頂けないでしょうか。 よろしくお願いします。

  • 微積分の証明問題についての質問です。

    微積分の証明問題についての質問です。 xの2乗をx^{2}のように表しています。 f:R^{n} → R , p∈R とする。 fが微分可能のとき、次の(1),(2)が同値であることを示せ。 (1)任意のα>0 と(x1,x2,…,xn)∈R^{n} に対して、 f(αx1,αx2,…,αxn) = α^{p}f(x1,x2,…,xn) …(※) (2)任意の(x1,x2,…,xn)∈R^{n}に対して、 Σ[k=1,n]xk{∂f(x1,x2,…,xn)/∂xk} = pf(x1,x2,…,xn) …(♯) ヒントとして、 ・(1)⇒(2) (※)の両辺をαで微分して、α=1とおく。 ・(2)⇒(1) F(x1,x2,…,xn,α) := α^{-p}f(αx1,αx2,…,αxn) を考えて、 ∂F(x1,x2,…,xn,α)/∂α = 0 を示せ。 が与えられています。アドバイスお願いします。

  • MATLABの使い方

    純粋な数学の質問じゃなくて申し訳ないのですが、数学に関することなのでここで質問させていただきました。MATLABを使って以下のことを計算させたいのですが、その入力の仕方を教えてください。 1.以下の近似値を求めよ。 (1)e=lim[n→∞](1+1/n)^n (2)e=Σ[n=0→∞]1/(n!) (3)π=4(1-1/3+1/5-1/7+…) (4)π=4{4(1/5-1/(3・5^3)+1/(5・5^5)-…)-(1/239-1/(3・239^3)+1/(5・239^5)-…)}  (5)100^(1/9) (6)5^(-x)=x 2.以下の関数のグラフを表示させる  (1)e^(-x)・Arctanx (-5≦x≦5)  (2)x=(t^2-t-3)e^(t)・cost,y=(t^2-5t+1)e^(t)・sint (-1≦t≦10) MATLABに関してはまったくの初心者なので、できれば入力方法を具体的に示していただければ幸いです。よろしくお願いします。

  • 線型性について質問があります

    線型性の例として一番に挙げられるものとして、 f(x) = ax (aは任意の定数) のようなものがあると思います。 f(x) = y とすると y = ax となり、xに何か数を代入すると、yが決まるというような、1つ数を入力すると1つ数が出力されるという関係を表していると考えることができると思います。 ここで質問なのですが、1つ数を入力して1つ数が出力される関数のうち、線型性を備えているものは文頭のような比例関係を示している式のみなのでしょうか? ほかにはないのですか? また、1つしかないという証明などがあるのでしょうか? なにか知っている方、回答よろしくおねがいします。

  • MATLABの関数で配列の要素を返す方法

    現在MATLABについて勉強しているのですが、関数(function)を用いて配列の値を返す方法が分からず困っています。 関数で定義した配列A(m行n列)を用いて、メイン関数で配列の要素Aijを呼び出す、ということがしたいのです。 function y=Func(x)等で1変数や他変数の入出力の仕方は分かります。 どなたか初心者でも理解できるようご教授お願い致します。

  • max(X1,X2,X3......Xn)の確率密度関数はなんですか。

    max(X1,X2,X3......Xn)の確率密度関数はなんですか。 min(X1,X2,X3......Xn)の確率密度関数はなんですか。

  • MATLABによるFFT

    MATLABのfft関数を使用して,フーリエ変換してPSDを算出すると,スペクトルの周波数領域での積分値が元データの二乗平均値と一致しないのですが,原因は何が考えられるでしょうか?FFTの出力がフーリエ係数であれば一致するはずなのですが.

  • 関数f(x)が区間Iで下に凸である事を利用した証明

    関数f(x)が区間Iで下に凸である時、Iの任意のn個の点x1,x2,・・・xnに対して、不等式f((x1+x2+・・・+xn)/n)≦(f(x1)+f(x2)+・・・+f(xn))/nが成り立つ事を示せ、という問題で、下に凸である事の定義x1<x<x2で(f(x)-f(x1))/(x-x1)≦(f(x2)-f(x))/(x2-x)をどうやってつかってやれば証明がうまく出来るのでしょうか?ヒントをください。お願いします。

専門家に質問してみよう