[Scilab-users] ?==?utf-8?q? plotting a function that changes with x
P M
p.muehlmann at gmail.com
Mon Feb 10 02:46:49 CET 2020
Hi,
with the if-loop-approach you probably thought about this:
x=(0:1:72)for i=1:length(x)
if ((x(i)<18) == %T) // elementwise comparison
then y(i) = sin(x(i)*%pi/24)
else
y(i)= 0.1*x(i)
endendplot2d(x,y,2)
However it's a if-loop within a for loop...
Best regards,
Philipp
Am So., 9. Feb. 2020 um 10:34 Uhr schrieb Antoine Monmayrant <
amonmayr at laas.fr>:
> Hello,
>
> I think that (x>18) is not doing what you think it does.
> See below two options to define y piecewise.
> Hope it helps,
>
> Antoine
>
> ----------------------
>
> //your code
> clf
> x=(0:1:72)
> // here you x<18 is not what your think (it's a boolean vector)
> if x<18
> then y = sin(x*%pi/24)
> else
> y= 0.1*x
> end
> plot2d(x,y,2)
>
> // two options
>
> // using the fact that x>18 is converted into
> // 1 when the condition is true
> // 0 when the condition is false
> y2 = sin(x*%pi/24).*(x>18) + 0.1*x.*(x<=18);
>
> plot(x,y2,"ro");
>
> // using a range of indices & find
> y3=0.1*x;
> inds=find(x>18);
> y3(inds)=sin(x(inds)*%pi/24);
>
> plot(x,y3,"g");
>
> ----------------------
>
>
>
>
> Le Dimanche, Février 09, 2020 08:56 CET, Lloyd Judd <ltjudd at bigpond.com>
> a écrit:
>
> > Hello,
> > I am trying make a plot, the function of which changes depending on the
> > value of x,. What I am really trying to do is to simulate solar panel
> > out put where it roughly follows a sine function during daylight but is
> > basically zero from sunset to sunrise, and then later overlay that with
> > the demand curve. But I am still experimenting with the code at this
> > stage.
> > I tried all different ways; using the "function" command and the "plot
> > 2d" command . It only ever seems to plot the last argument in the "if
> > then else" statement.
> > For example with this code;
> > clf
> > x=(0:1:72)
> > if x<18
> > then y = sin(x*%pi/24)
> > else
> > y= 0.1*x
> > end
> > plot2d(x,y,2)it only plots the y=0.1x partConversely if I put the
> > sine function under the "else" statement, it only plots the sin
> > function.clfx=(0:1:72)
> > if x<18 then
> > y=0.01*x
> > else
> > y=sin(x*%pi/24)
> > end
> > plot2d(x,y,2)What is the best way to plot a function that changes
> > depending on the range of x?Thanks and regardsLloyd Judd
> >
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20200210/0931ea0a/attachment.htm>
More information about the users
mailing list