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 日

0 投票

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 件)

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

質問済み:

2024 年 2 月 23 日

コメント済み:

Rik
2024 年 2 月 23 日

Community Treasure Hunt

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

Start Hunting!

Translated by