• ベストアンサー

MATLABにて場合分け関数を定義したい

MATLABの超初心者です. 関数f(x)を定義域により,違う関数で定義したいと考えています. つまり, f(x)= f1(x) if x<=5 = f2(x) if x>5 という感じです.なにぶん初心者のため,何を調べればよいのやら途方に暮れています.アドバイスお願いします

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

  • ベストアンサー
  • m0r1_2006
  • ベストアンサー率36% (169/464)
回答No.1

いろんなレベルがあるけど x に配列を要求しないなら, function [y] = foo1(x) if (x<=5) y = cos(x); else y = sin(x); end みたいで良いし, x に配列が入る場合は, function [y] = foo2(x) I = find(x<=5); J = find(x>5); y = zeros(size(x)); y(I) = x(I).^2 - 2; y(J) = -2*x(J).^2 + x(J) + 20; の様な関数でどないでしょう.

daa-junji
質問者

お礼

ありがとうございました.早速,取り掛かろうと思います.

関連するQ&A

  • Matlabでのinverse(逆関数)のあらわし方

    こんにちわ。 研究で急にMatlabを使わなければいけなくなりました、Matlab初心者です。 ちょっとお聞きしたいことがあり、質問させていただきます。 MatlabでのInverse(逆関数)の計算の仕方がわからず、途方にくれ ています。どなたか教えていただけないでしょうか? 三角関数の逆関数の計算を表したいんですが、たとえば、 f(n) = cos(π*n) 0<=n<=1 = 0 otherwise みたいな関数があったときに、この関数とこの関数の逆関数を計算し、グラフ化したいのですが。 よろしくお願いいたします。

  • maximaでの関数定義

    実際はもっと複雑な関数の定義なのですが簡易化して,例えば f(x)=x (if x≧0), =x^2 (if x<0) である関数 f を定義する書式はどのようになるのですか? 実際は,そのような f のグラフを描きたいので 表示させる plot2 コマンドの書式はどのようになるのでしょうか?

  • matlabについて

    こんにちは。matlabについての質問です。 matlabについてまったくの初心者なのですが、大学のパソコンに入っているmatlabでsymsという変数の指定をしても、エラー表示がでてしまいます。これはどうやらmatlabに追加のtoolが入っていないと使えないということが調べていたらわかりました。この場合たとえば、f=x^2-x-1でf=0をxについて説くという場合どのようにmatlabに入力すればいいのですか?いろいろ調べたのですがよくわからなくて・・・。また、僕みたいな超初心者でもわかりやすいmatlab入門書やサイトで、お薦めの本などありましたら、教えていただきたいです。お願いします。

  • 導関数の定義域について

    導関数の定義域について 例えば、すべての実数xで微分可能な関数f(x)において、x≧aとするとき、f'(x)の定義域はx≧aですか?それともx>aですか? 導関数の定義域はいつも開区間になっているような気がするんですが、その理由がいまいち理解していません。もとの関数では定義域に入っているが導関数では定義域に入っていないのは、導関数において分母を0にする数だから、絶対値記号の場合分けの分かれ目だから、という理由で合ってますか? もし合ってるとしたら、はじめに質問したf'(x)の定義域はx≧aとなりますよね? とても気になっています。 よろしくお願いします。

  • c言語の関数定義について

    次の関数定義を考える. int f(int x) {if (x > 0) {return x * f(x-1);} else {return 1;} } この関数f と働き(すなわち,引数と戻り値の関係)が同じで再帰呼出(recursive call) を使わない関数g をC で定義せよ.ただし,オーバーフロー(overflow) については考慮しなくてよい. ”この関数f と働き(すなわち,引数と戻り値の関係)が同じで再帰呼出(recursive call) を使わない関数g をC で定義せよ”って理解できません、どのように定義したいいか、ご教授お願いします。

  • 定義から導関数を求める

    定義1 I=(a,b) a<b f;I→R(実数),x0∈I に対してfはx0で微分可能 ⇔ ∃α∈R(実数):f(x)=f(x0)+α(x-x0)+o(x-x0) (x→x0) 定義2 fはI上で微分可能 ⇔ f'はIの任意の点で微分可能。このときf';I∈x0→f'(x)∈R(実数)なる函数が定まる。これを導関数と言う。 微分の定義に基づいて、次の導関数を求めよ。 f(x)=exp(ax) (a∈R\{0}) o(g(x))=f(x)⇔lim[x→x0]f(x)/g(x)を用いるのでしょうか?どんな風に解答すればいいのか分かりません。よろしくお願いします。

  • 合成関数の定義域・値域

    ある関数f(x)とg(x)があったとき、f(x)の定義域がg(x)の値域を含む場合、合成関数(f○g)(x)が考えられると学んだのですが、それは理解できました。しかし、合成関数(f○g)(x)の定義域が、g(x)の定義域と等しいというのがなぜそうなるのか良く分かりません。f(x)の定義域はg(x)の値域と同じかそれより広いはずなので、合成関数(f○g)(x)の定義域は狭い方のg(x)の値域と同じになるのでは、と思ったのですがどうでしょうか。 ご教授よろしくお願いします。

  • 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を指定しなければエラーになってしまいます。同じ関数名でも呼び方に応じて異なった操作をさせることはできないでしょうか?

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

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

  • Matlabのinline関数

    ネットでダウンロードしたMファイルに f = inline('x^2 + y^2') という記述があるのですが、このinline関数というものがなんなのかが良くわかりません。 ネットで調べたところ、inline関数はオーバーヘッドを避けることができるとか、オリジナル関数を定義するときに使うとかという表現を見たのですが、上の記述は単に'x^2 + y^2という関数を定義しているだけなのでしょうか。関数Mファイルを作成するのと同義なのでしょうか。その場合、inline関数を使用する利点等がなんなのか教えていただきたいと思います。

専門家に質問してみよう