区間に応じて2つの関数を使い分けて演算したい

例:
x<0ではy=exp(x), x>=0ではy=sin(x) の yを計算で取り出したいです。
plotのしかたまでは見つけられますが、データをワークスペースにどう取り出せばいいのかわかりません。

 採用された回答

Hernia Baby
Hernia Baby 2021 年 2 月 18 日

0 投票

y1 = y(x(x<0));
y2 = y(x(x>=0));
のようにすれば取り出せます。
以下は一度正負で異なる関数を返し、まとめてプロットする方法です。
参考にどうぞ。
clear, clc, close all;
x = -3:0.1:3;
x = x';
y1 = exp(x(x<0));
y2 = sin(x(x>=0));
figure(1);
plot(x,[y1; y2],'o')

3 件のコメント

kenichiro inagaki
kenichiro inagaki 2021 年 2 月 18 日
ありがとうございます!もう少し可能でしたら教えて下さい。
これだとxとyの関係が別々になってしまうんですが、一つに統合するにはどうすればいいしょうか
上記の式に対し、
y = [y1 ; y2]
を作成、その後
XY = [x y]
と統合するのがセオリーでしょうか。これだと簡単ですが、もし他にやり方があれば教えていただきたいです…。
Hernia Baby
Hernia Baby 2021 年 2 月 19 日
その認識であってます。
列の統合にはカンマ( , )が必要です。
2列目にyを統合する場合は以下の手順を行ってください。
-----------
y = [y1; y2];
xy = [x, y];
-----------
xy(:,1) に x の列ベクトル、xy(:,2) に y の列ベクトル
がそれぞれ格納されます。
kenichiro inagaki
kenichiro inagaki 2021 年 2 月 19 日
ありがとうございます!できました!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchangeグラフィックス についてさらに検索

製品

リリース

R2019a

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!