[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