function handle parameterization interval

2 次查看(过去 30 天)
Hello everyone,
yesterday I got help from the community for my problem. I try to make a parameterized function of a straight line - radius - straight line (three segments). For simplicity I'd like to enter it in one single function handle as f(t) and adapt the parameter t with intervals. My function looks like this:
geo.x = @(t) t(t<=l_1) * 1 + geo.radius * cos(t(t>= l_1 & t<=l_2) / geo.radius + 1.5*pi) + t(t>=l_2) * cosd(geo.psi);
with l_1 = length of the first interval, l_2 first and second interval and l_3 length of the whole polyline. Due to any reason, matlab cant handle this, when I want to execute the function with the parameter (t = linspace 0,l_3) and returns the following error:
Error using +
Matrix dimensions must agree.
Error in @(t)t(t<=l_1)*1+geo>=l_1&t<=l_2)/geo.radius+1.5*pi)+t(t>=l_2)*cosd(geo.psi)
Can anyone tell me, where my mistake is located?
Thanks in advance! Georg

采纳的回答

Mischa Kim
Mischa Kim 2016-10-25
编辑:Mischa Kim 2016-10-25
Georg, you could use something like
l_1 = 1;
l_2 = 2;
radius = 0.5;
psi = 0.2;
t = -1:0.01:5;
geo = @(t) [t(t<=l_1) * 1 , radius * cos(t(t> l_1 & t<l_2) / radius + 1.5*pi) , t(t>=l_2) * cosd(psi)];
plot(t,geo(t))
Note, the function is not quite the same as yours. Essentially, you break up the function into intervals which you then concatenate into one vector.
  1 个评论
Georg Söllinger
Georg Söllinger 2016-10-25
Hello Mischa,
thanks for your fast answer. Well,the problem is, that I would prefer a single vector, as I would like to proceed with some other operations, where a single function without discontinuities would be preferable. E.g. I want to calculate the normal on the polyline with atan(y(t2)-y(t1))/(x(t2)-x(t1)) and an intersection point with a circle. Programming those operations would be much easier if only having a single function. Isn't there a way to achieve that?

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by