define function in one line

20 次查看(过去 30 天)
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.

请先登录,再进行评论。

采纳的回答

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

Community Treasure Hunt

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

Start Hunting!

Translated by