define function in one line

91 ビュー (過去 30 日間)
fumio hakamada
fumio hakamada 2024 年 2 月 23 日
コメント済み: Rik 2024 年 2 月 23 日
How can I define vector p without using function statement?
suppose
t = 0:0.1:1
p = sin(t) when t<0.6
p = 0 when t>=0.6
  2 件のコメント
DGM
DGM 2024 年 2 月 23 日
編集済み: DGM 2024 年 2 月 23 日
What's wrong with just
t = 0:0.1:1;
p = sin(t).*(t<0.6);
plot(t,p)
... of course, the range and resolution of t makes this plot appear a bit unclear.
fumio hakamada
fumio hakamada 2024 年 2 月 23 日
Thank you for your reply.

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

採用された回答

Rik
Rik 2024 年 2 月 23 日
I don't know if you want to avoid anonymous functions as well, but this should give you a finer plot:
% p = sin(t) when t<0.6
% p = 0 when t>=0.6
p = @(t) (t<0.6).*sin(t);
fplot(p,[0 1])
The problem here is mostly that sin(x) is very close to x for small x, which means you have a fairly straight line. Adding a straight line helps to show there is actually a slight curve:
p = @(t) (t<0.6).*sin(t);
figure
fplot(p,[0 1])
hold on
fplot(@(t) sign(p(t)).*t,[0 1])
legend({'y = sin(t)','y = x'})
  2 件のコメント
fumio hakamada
fumio hakamada 2024 年 2 月 23 日
移動済み: Rik 2024 年 2 月 23 日
I had no idea about logical vector and usage of ".*". Thanks for both of you.
Rik
Rik 2024 年 2 月 23 日
You're welcome. If my answer solved your issue, please consider marking it as accepted.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGraphics Performance についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by