[Scilab-users] "Smoothing" very localised discontinuities in curves.

tim at wescottdesign.com tim at wescottdesign.com
Mon Apr 4 08:12:34 CEST 2016


If your FEM software can't handle non-monotonic data, can it handle 
noisy data?

I'm taking "smoothing" to mean "filtering" here.

In general the filtering problem is to decide on the characteristics of 
your desired signal, the characteristics of your noise, and then make 
some mathematical transformation that minimizes the effects of anything 
with noise-like characteristics while retaining as much of anything with 
desired-signal-like characteristics.

This has two salient corollaries: first, you have to know what the 
characteristics of your signal and noise are; and second, the more that 
your signal resembles your noise, the less of it you will be able to 
recover.

You can spin off from there in a number of different directions, leading 
you to a number of different filtering techniques.

It appears that you're doing your measurements by varying some 
controlled parameter along the vertical axis and measuring along the 
horizontal axis.  If this is the case, then I would start by trying 
filtering techniques using the vertical axis as your "time" axis.

There is no linear filtering technique (i.e., output sample = weighted 
some of a vector of input samples) that you can use that guarantees 
monotonicity for all possible inputs.  If you use linear filtering then 
you need to verify monotonicity by experiment.  If your FEC program is 
messed up by noise as much as non-monotonicity, then this is not a bad 
thing -- it's just an indication that you're filtering heavily enough.

If the problem really, truly is monotonicity, then take the derivative 
at each point, and snip out the points that go the wrong direction.  I 
suspect this won't lead to joy, but it'll meet your stated objectives.

If the problem with the smoothing filters that you've tried is that it 
works well in some spots and not in others, then consider using a filter 
whose properties vary depending on where on the axis your output sample 
is located.  This isn't something that you'll find pre-packaged -- 
you'll have to whomp something up using more primitive functions of 
Scilab.

I could go on and on -- sorry for coming to a disorganized end here, but 
I hope I'm giving you some food for thought.

On 2016-04-03 12:09, scilab.20.browseruk at xoxy.net wrote:
> HI,
> 
> The data I'm dealing with is experimentally produced; and thus
> contains occasional, localised discontinuities (inflections), that I
> need to remove before that data is suitable for is use in FEM modeling
> software, which requires that it be strictly monotonic. The attachment
> shows the full curve plus a close up of a couple of examples of the
> type of discontinuity I need to deal with.
> 
> I haven't yet decided whether to simply omit points (thus connect A to
> F & G to J) or whether to retain the same number of points by
> interpolating new points onto that line as shown in red.
> 
> I've looked and played several of the smoothing, convolution and
> interpolation routines that scilab provides, but (besides that I don't
> understand the output some of them produce) they also seem to affect
> the data more than I would like. Some seem to introduce a 'phase
> shift'; others smooth out larger scale bumps in the curve that need to
> be retained; and others generate many extra points which I don't think
> is helpful, the FEM software is going to do its own interpolations
> anyway.
> 
> 
> But the bit I'm asking about here is how to detect point A&F and G&J?
> 
> Any thoughts or pointers as to a) the algorithm to use; b) how to
> implement it in SciLab?
> 
> Cheers, Buk.
> 
> ____________________________________________________________
> Can't remember your password? Do you need a strong and secure password?
> Use Password manager! It stores your passwords & protects your account.
> Check it out at http://mysecurelogon.com/password-manager
> 
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users




More information about the users mailing list