[Scilab-users] spline and color plot on the chart

Federico Miyara fmiyara at fceia.unr.edu.ar
Tue Apr 14 18:33:00 CEST 2020


Daniel,

Looking at the graph from your script there are two striking things. 
First, your data seems to be heavily clustered at certain regions, I 
mean, several points very close to each other, then a gap without data 
(which is conveniently interpolated by the plot clause), then another 
cluster and so on. From a statistical point of view, each cluster
counts as a single point. You don't have information of what happens 
between neighboring clusters.

The second striking thing is that you don't seem to be using the spline 
concept correctly. You are using it to approximate the same points you 
already have. To make things worse, you are using lsq_splin (a cannon to 
kill a fly), which is normally used to get a simpler spline by using 
less breakpoints than the total number of available points. This will 
normally give a smooth approximation of data, so that the spline will 
not necessarily pass through any of your points. It is used when the 
data set is inconsistent due to noise or measurement errors to avoid 
over representing irrelevant features. If you use it with the same 
number of breakpoints as the available data, I guess you will have a 
spline that pass through all the points (this will be the least-square 
solution since the error will be zero), so it is the same as an ordinary 
spline interpolation.

The correct way to use a spline is to use it to interpolate your data, 
i.e., to have much more points than the original ones, or to have them 
more evenly distributed. You are representing your very same data using 
a spline, so there is no smoothing. The plot function does some 
interpolation job, but linearly: it connects points with straight segments.

You need to calculate more points and more evenly distributed with your 
spline, but probably you'll be disappointed because the behavior in the 
large gaps between data clusters may be strangewith some odd oscillations..

If you can, try to generate your data more evenly.

Regards,

Federico Miyara


On 11/04/2020 21:45, Daniel Stringari wrote:
> Federico,
>
> I am extracting the values of the vectors (vv12 and vt12) from a logic 
> in which it takes data from a spreadsheet that was generated using 
> specific software. The vectors (vv12 and vt12) represent an efficiency 
> curve within the torque x speed plane, I have eleven more of these 
> vectors that vary in size. I believe that I do not have a role in 
> which one depends on the other directly. I tried to follow your first 
> reasoning and arrived at a routine that does not report errors but is 
> not smoothing my curve either, follow the routine:
>
> clc
> clear
> vt12  =  [5350.3,5380.19,5410.08,5439.96,4149.5,4179.35,3756.57,3602.73,3568.12,3597.85,3681.91,3711.59,6143.24,6172.86,6202.49,6232.1]
> vv12  =  [40.16,39.93,39.71,39.49,69.04,68.54,95.32,119.26,140.49,139.32,155.62,154.37,93.27,92.82,92.38,91.94]
>
> c  =  size  (vt12)
> a  =  1
> b  =  c(2)
> n  =  c(2)
> x  =  linspace  (a,  b,  n)
>
> [yvt,dvt]  =  lsq_splin(x,vt12,linspace  (a,b,n))
> [yvv,dvv]  =  lsq_splin(x,vv12,linspace  (a,b,n))
>
> ys=interp(linspace  (a,b,n),linspace  (a,b,n),yvt,dvt)
> xs=interp(linspace  (a,b,n),linspace  (a,b,n),yvv,dvv)
>
> plot  (ys,xs,'r')
> xlabel  ('Speed (rpm)')
> ylabel  ('Torque (Nm)')
> title  ('Torque x speed values')
> Any idea how I can proceed with my goal of smoothing the curve to use the color map later?
>
> On Sat, Apr 11, 2020 at 9:18 PM Federico Miyara 
> <fmiyara at fceia.unr.edu.ar <mailto:fmiyara at fceia.unr.edu.ar>> wrote:
>
>
>     Daniel,
>
>     I'm afraid I was a bit confused with your application case.
>
>     I assumed that there was an independent variable such as time or
>     other which the other two, vt12 and vv12, depend on. If this were
>     the case, the expected graph could be a curve or rather a
>     trajectory with some hysteresis.
>
>     But if your data are just measurements in no particular order of
>     what is a functional relation of one variable respect to the
>     other, for instance vt12 = f(vv12), then the approach is
>     different. You should basically sort the independent variable in
>     increasing order using gsort and apply the same sorting to the
>     dependent variable:
>
>     [x, I] = gsort(vv12,"g","i");
>     y = vt12(I);
>
>     Then you can proceed to interpolate with spline or lsg_splin.
>
>     Regards,
>
>     Federico Miyara
>
>
>     On 10/04/2020 21:05, Daniel Stringari wrote:
>>     Federico,
>>
>>     I appreciate the help. Below is a list of the code on which I try
>>     to plot the data with Isq_splin:
>>
>>     c = size (vt12)
>>     a = 0
>>     b = c (1) // c (1) = 16
>>     n = c (1)
>>     x = linspace (a, b, n)
>>     [y, d] = lsq_splin (vt12, vv12, x ')
>>     plot (y, d, 'r')
>>     xlabel ('Speed (rpm)')
>>     ylabel ('Torque (Nm)')
>>     title ('Torque x speed values')
>>
>>     //vt12 = 5350.3 5380.19 5410.08 5439.96 4149.5 4179.35 3756.57
>>     3602.73 3568.12 3597.85 3681.91 3711.59 6143.24 6172.86 6202.49
>>     6232.1
>>     //vv12 = 40.16   39.93   39.71   39.49   69.04   68.54 95.32  
>>     119.26   140.49   139.32   155.62   154.37 93.27   92.82   92.38
>>       91.94
>>
>>     but I'm getting the error: lsq_plin: There are not enough points
>>     to adjust.
>>
>>     Does anyone understand what could be wrong?
>>
>>     On Wed, Apr 8, 2020 at 12:54 AM Federico Miyara
>>     <fmiyara at fceia.unr.edu.ar <mailto:fmiyara at fceia.unr.edu.ar>> wrote:
>>
>>
>>         Daniel,
>>
>>         You may try with lsq_spline, which unlike ordinary spline,
>>         doesn't fit the data exactly, and it doesn't need the data
>>         with any particular order.
>>
>>         But trying to understand your graph, it seems that you should
>>         parametrize two variables independently, each one with
>>         respect to the index. Something like this:
>>
>>         x = [x1, x2, ..., xn]
>>         y = [y1, y2, ..., yn]
>>
>>         Then you approximate x vs 1:n and y vs 1:n using spline or
>>         lsq_splin. Finally you plot xs vs ys (the smoothed versions
>>         of x and y)
>>
>>         Regards,
>>
>>         Federico Miyara
>>
>>
>>         On 07/04/2020 22:48, Daniel Stringari wrote:
>>>         Good night friends,
>>>         I wrote an email before, but I believe that I was not clear in my words and
>>>         so I will write more clearly.
>>>
>>>         In this annex 1, I have the graph I am generating. Basically I am extracting
>>>         values of x (speed) and y (torque) from excel and generating vectors of x []
>>>         and y [] to plot internal lines. I want to smooth these lines, but the
>>>         functions of the scilab are only for growing points. I thought about
>>>         creating cubic splines manually, but I don't know how to do it. Can anybody
>>>         help me ?
>>>
>>>         In addition, I would like to color my chart with level colors according to
>>>         the colorbar, but I am not able to implement contour2d for this case.
>>>
>>>         thanks.
>>>
>>>         <http://mailinglists.scilab.org/file/t498028/annex_1.png>  <http://mailinglists.scilab.org/file/t498028/annex_1.png>  
>>>
>>>
>>>
>>>         --
>>>         Sent from:http://mailinglists.scilab.org/Scilab-users-Mailing-Lists-Archives-f2602246.html
>>>         _______________________________________________
>>>         users mailing list
>>>         users at lists.scilab.org  <mailto:users at lists.scilab.org>
>>>         http://lists.scilab.org/mailman/listinfo/users
>>>
>>
>>         _______________________________________________
>>         users mailing list
>>         users at lists.scilab.org <mailto:users at lists.scilab.org>
>>         http://lists.scilab.org/mailman/listinfo/users
>>
>>
>>     _______________________________________________
>>     users mailing list
>>     users at lists.scilab.org  <mailto:users at lists.scilab.org>
>>     http://lists.scilab.org/mailman/listinfo/users
>
>     _______________________________________________
>     users mailing list
>     users at lists.scilab.org <mailto:users at lists.scilab.org>
>     http://lists.scilab.org/mailman/listinfo/users
>
>
> _______________________________________________
> 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/20200414/fb49685d/attachment.htm>


More information about the users mailing list