Re: [Filter] No code?
Hi all, sorry for the long silence. I've been just too busy with my main (paying) jobs which also involve two startups. I'd love to help that realistically I just don't have the time just now. So I should be upfront. I'd say from Aug things will have calmed down and happy to join back in. I'm also teaching again DSP from Sept so that gives me naturally time to work on it. Best, /Bernd On 13/01/17 08:51, Eric Barnhill wrote: > That was where we left it. I asked Bernd if he did not have write access to > the sandbox. If there was a reply to that I didn't see it. > > This would be the key thing to sort out. Can Bernd write to the sandbox or > is it committers only? If it is only committers, I am happily to push > Bernd's contributions I just need to know what the procedure is going to > be. > > Eric > > On Fri, Jan 13, 2017 at 9:12 AM, Bernd Porr <m...@berndporr.me.uk> wrote: > >> Hi Gilles, >> >> I *think* I suggested to add a couple of subdirs. One of them with my IIR >> filter code and another one for the Kalman filter in it. However, I don't >> have write access to it so I think Eric is planning of doing it. >> >> Best, >> /Bernd >> >> >> On 13/01/17 01:33, Gilles wrote: >> >>> Hello. >>> >>> As of today (revision 1778484), the SVN repository >>> https://svn.apache.org/repos/asf/commons/sandbox/filter/trunk >>> is empty. :( >>> >>> What is the status/roadmap? >>> >>> Thanks, >>> Gilles >>> >>> >>> - >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> For additional commands, e-mail: dev-h...@commons.apache.org >>> >>> >> -- >> http://www.berndporr.me.uk >> http://www.attys.tech >> http://www.linux-usb-daq.co.uk >> http://www.imdb.com/name/nm3293421/ >> +44 (0)7840 340069 >> >> >> - >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >> For additional commands, e-mail: dev-h...@commons.apache.org >> >> -- www:http://www.berndporr.me.uk/ http://www.linux-usb-daq.co.uk/ http://www.imdb.com/name/nm3293421/ Mobile: +44 (0)7840 340069 Work: +44 (0)141 330 5237 University of Glasgow School of Engineering Rankine Building, Oakfield Avenue, Glasgow, G12 8LT - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [Filter] No code?
Ooops. Sorry. Didn't see that e-mail. I'm away to Greece at the moment but I'll have a try re write access at the weekend. I agree that it would be much quicker if I could commit to the sandbox straight away. /Bernd On 13/01/17 10:51, Eric Barnhill wrote: That was where we left it. I asked Bernd if he did not have write access to the sandbox. If there was a reply to that I didn't see it. This would be the key thing to sort out. Can Bernd write to the sandbox or is it committers only? If it is only committers, I am happily to push Bernd's contributions I just need to know what the procedure is going to be. Eric On Fri, Jan 13, 2017 at 9:12 AM, Bernd Porr <m...@berndporr.me.uk> wrote: Hi Gilles, I *think* I suggested to add a couple of subdirs. One of them with my IIR filter code and another one for the Kalman filter in it. However, I don't have write access to it so I think Eric is planning of doing it. Best, /Bernd On 13/01/17 01:33, Gilles wrote: Hello. As of today (revision 1778484), the SVN repository https://svn.apache.org/repos/asf/commons/sandbox/filter/trunk is empty. :( What is the status/roadmap? Thanks, Gilles - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org -- http://www.berndporr.me.uk http://www.attys.tech http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org -- http://www.berndporr.me.uk http://www.attys.tech http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [Filter] No code?
Hi Gilles, I *think* I suggested to add a couple of subdirs. One of them with my IIR filter code and another one for the Kalman filter in it. However, I don't have write access to it so I think Eric is planning of doing it. Best, /Bernd On 13/01/17 01:33, Gilles wrote: Hello. As of today (revision 1778484), the SVN repository https://svn.apache.org/repos/asf/commons/sandbox/filter/trunk is empty. :( What is the status/roadmap? Thanks, Gilles - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org -- http://www.berndporr.me.uk http://www.attys.tech http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [Filter] Better name? (Was: [math] IIR filter library [...])
Hi Gilles, I like the idea of "SigProc". Filter is a bit too narrow especially when we also include more exoctic processing and/or analysis etc. In terms of complex: the filter package uses complex numbers but that's totally transparent to the user so for those who are not into DSP might not look it up there. Also, if we add FIR filter design at some point then that's usually done with the Fourier Transform. How would you organise the different sub-packages in SigProc? Let say we have IIR, Kalman and FIR. At least IIR and Kalman consist of approx 10 java files so ideally they should live in subdirectories at least so we could create sub-packages then? Best, /Bernd On 23/11/16 13:34, Gilles wrote: Hi Bernd, Eric (and others). I was about to request a JIRA project for the "filter" component.[1] The name "FILTER" is not taken (as a JIRA project) but it would be better if we are sure that the name will stick (rather than have to later change the JIRA id or keep one that would not be close to the component's name. How about "Sig(nal) Proc(essing)"? Alternatively, would there be any sense to develop this codebase as a module within the "Commons Complex" project.[2] IOW, is it foreseen that "Filter" will depend on any code other than what is going to end up in the "Complex" project?[3] Regards, Gilles [1] Currently, an empty directory in the "sandbox" SVN repository. [2] Currently, an empty git repository. [3] AFAICT: Classes from o.a.c.math4.complex o.a.c.math4.analysis.solvers o.a.c.math4.transform packages. - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org -- http://www.berndporr.me.uk http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [complex] commons-complex module
Hi Eric, how do we move this forward? I cannot commit to the CVS so shall I send you patches and you work them in or what is the workflow? Best /Bernd On 26/10/16 13:48, Eric Barnhill wrote: On Wed, Oct 26, 2016 at 2:25 PM, Gilleswrote: It sounds like you can create your new component on top of math4, correct? Would you rather reply to the technical arguments put forward in the preceding paragraph? I've already answered your question many times (see the archive). You do not need anything else? Aside from a better component name IMO. "filter" is way to generic for me. Is that the crux of the matter? "Math" wasn't too generic perhaps? Gilles Hi Gilles, I read this email differently than you. My understanding is that Gary is open to a filter subproject but would just like a different name (to which Bernd replied). But, I don't really know what he meant by the expression "built on top of math 4". I did not interpret it as putting all these new modules in math4 . Eric -- http://www.berndporr.me.uk http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: commons-filter sandbox is operational
Hi Eric, the error came from not having a site subtree. I've added one. That needs to change so that it fits into the numbering scheme of the library. I guess it will be a sub-topic in the filter.xml? Either way "mvn site" works now to get it going. /Bernd On 02/11/16 09:09, Eric Barnhill wrote: Hi Bernd, looks like I need org/sonatype/aether/graph/DependencyFilter . Any ideas where to find that? Complete stack trace below Bernd's reply. Eric On Tue, Nov 1, 2016 at 5:50 PM, Bernd Porr <m...@berndporr.me.uk> wrote: Thanks, Eric for setting up a sandbox project. What is required for "mvn site"? /Bernd On 01/11/16 16:17, Eric Barnhill wrote: I have set up a sandbox project for commons-filter in the commons sandbox subversion repository. I used models in the sandbox for LICENSE.txt, NOTICE.txt and the pom.xml, and set up a folder tree for src . mvn install runs successfully, mvn site does not. The pom model I used (cli2) had jira-related tags. I do not appear to have the authority to create a JIRA project. Should I create a JIRA for this project? If so, am I missing this option because I have not yet linked my Apache JIRA with my apache.org ID? And if so, can anyone tell me a way to link them? Thanks, Eric -- http://www.berndporr.me.uk http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org [WARNING] Error injecting: org.apache.maven.reporting.exec.DefaultMavenReportExecutor java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) at java.lang.Class.getDeclaredConstructors(Class.java:2020) at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:245) at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:99) at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:658) at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:882) at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:805) at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:282) at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:214) at com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:1006) at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1038) at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1001) at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051) at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48) at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53) at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:65) at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115) at org.eclipse.sisu.bean.BeanScheduler$Activator.onProvision(BeanScheduler.java:176) at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:126) at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68) at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:63) at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81) at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51) at org.codehaus.plexus.Def
Re: commons-filter sandbox is operational
Hi Eric, there hasn't been any documentation except of javadoc on it. I've added a page in the APT format. msv site requires documentation. Not sure what's required here. Best, /Bernd On 02/11/16 09:09, Eric Barnhill wrote: Hi Bernd, looks like I need org/sonatype/aether/graph/DependencyFilter . Any ideas where to find that? Complete stack trace below Bernd's reply. Eric On Tue, Nov 1, 2016 at 5:50 PM, Bernd Porr <m...@berndporr.me.uk> wrote: Thanks, Eric for setting up a sandbox project. What is required for "mvn site"? /Bernd On 01/11/16 16:17, Eric Barnhill wrote: I have set up a sandbox project for commons-filter in the commons sandbox subversion repository. I used models in the sandbox for LICENSE.txt, NOTICE.txt and the pom.xml, and set up a folder tree for src . mvn install runs successfully, mvn site does not. The pom model I used (cli2) had jira-related tags. I do not appear to have the authority to create a JIRA project. Should I create a JIRA for this project? If so, am I missing this option because I have not yet linked my Apache JIRA with my apache.org ID? And if so, can anyone tell me a way to link them? Thanks, Eric -- http://www.berndporr.me.uk http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org [WARNING] Error injecting: org.apache.maven.reporting.exec.DefaultMavenReportExecutor java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) at java.lang.Class.getDeclaredConstructors(Class.java:2020) at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:245) at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:99) at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:658) at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:882) at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:805) at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:282) at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:214) at com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:1006) at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1038) at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1001) at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051) at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48) at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53) at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:65) at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115) at org.eclipse.sisu.bean.BeanScheduler$Activator.onProvision(BeanScheduler.java:176) at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:126) at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68) at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:63) at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81) at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51) at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263) at org.codehaus.plexus.DefaultPlexus
Re: commons-filter sandbox is operational
Thanks, Eric for setting up a sandbox project. What is required for "mvn site"? /Bernd On 01/11/16 16:17, Eric Barnhill wrote: I have set up a sandbox project for commons-filter in the commons sandbox subversion repository. I used models in the sandbox for LICENSE.txt, NOTICE.txt and the pom.xml, and set up a folder tree for src . mvn install runs successfully, mvn site does not. The pom model I used (cli2) had jira-related tags. I do not appear to have the authority to create a JIRA project. Should I create a JIRA for this project? If so, am I missing this option because I have not yet linked my Apache JIRA with my apache.org ID? And if so, can anyone tell me a way to link them? Thanks, Eric -- http://www.berndporr.me.uk http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [complex] commons-complex module
Hi all, I agree that 'filter' is slightly problematic but I'd say because it's been used in different contexts and often misleading. However, I cannot think of a better word. That also depends where we place 2D image processing. They are also called filters. For IIR , Kalman(and possibly FIR) filters these are causal digital filters as they essentially behave as an analogue circuit in a digital form. For the casual (!) user of filters they'd probably just look for a filter... /Bernd On 25-Oct-16 23:00, Gary Gregory wrote: On Tue, Oct 25, 2016 at 12:07 PM, Eric Barnhillwrote: On Tue, Oct 25, 2016 at 7:32 PM, Gary Gregory wrote: I am against this constant spinning out. Gary The proposed commons-filter is not a spin out. There was one filter in math and it didn't belong there. Now we have at least couple of people around who know signal processing and would like to make a commons-filter package. Virtually none of which is coming from commons-math except dependencies. Does such a package suit commons? I think so. Filtering is needed from image processing to statistics. Others can vote no if they disagree. Complex was in math too. Did it belong there? In C++ or Python, complex is just another data type, like String. Its placement in math was not straightforward. A self contained component to handle complex data types seems more sensible to me than having it in Math. In any case Gilles is making me a branch to populate, so that I can propose this component later, IIUC. It sounds like you can create your new component on top of math4, correct? You do not need anything else? Aside from a better component name IMO. "filter" is way to generic for me. Gary Eric -- http://www.eigenproductions.co.uk http://www.linux-usb-daq.co.uk http://www.berndporr.me.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [math] IIR filter library (Butterworth,Bessel,...)
Thanks. That's quite a lot of stuff in there and to be honest I'm not sure how to use the library by looking at the documentation (which just contains the PLL papers) and/or code. Again here most code works on 'array = filter (array)' and not 'sample = filter(sample)' (see for example CascadeFilter.java). If you filter a whole array then you can just use the convolution operation or just use the Fourier Transform to manipulate the frequencies and transform it back. That's what my students had to do for their 1st assignment and now we move on to causal (realtime) processing with FIR/IIR filters. Costas loops: For these to work we just need a lowpass filter (a causal one for real applications). The rest is just multiplication/addition and a digital oscillator (I use the Cordis algorithm for it). Actually, I prefer the 2nd gen Costas Loop: https://www.youtube.com/playlist?list=PLvUvEbh7a8u-_YCPNEIrjdnD1jxPW7dVk Stripping it down to what I think common math should provide is: it's a causal filter which is easy to set up (2 commands max). As I said before I prefer IIR esp with JAVA's slow processing but if you have a super efficient (causal / sample by sample) FIR implementation which can also design its own low/high/band/stopband filter via different methods then I think we should also add this. For example filters based on sinc functions and windowed with a choice of standard windows would be nice. /Bernd On 25/10/16 12:33, Arne Ploese wrote: > Am Montag, den 24.10.2016, 10:26 +0100 schrieb Bernd Porr: >> Opps. Link doesn't work. > Sorry, here we are https://sourceforge.net/projects/dsp4j/. > > there are subprojects fms(https://de.wikipedia.org/wiki/Funkmeldesystem > ) and zvei(https://de.wikipedia.org/wiki/5-Ton-Folge) > I grap the audiosignal off a 4m receiver @22kHz. The (frequency shift > modulated) FMS data is decoded with a costas loop. > > Arne > > > >> Do you mean the OCTAVE/MATLAB "filter" command? If you limit that to >> FIR >> coefficients then that's equivalent literally to a convolution >> operation >> which we already have. (that FIR filtering is the convolution >> function I >> have to de-bunk every year in my DSP class because in teaching >> nothing >> is filtered in realtime so an FIR filter is sold literally as a >> convolution operation, however the FIR filter does a convolution as >> any >> other filter but it performs it with the help of a delay line which >> is >> implemented usually as a ring buffer). >> >> Perhaps before we talk about different things. >> >> Can we all agree on the definition of an FIR filter: >> https://en.wikipedia.org/wiki/Finite_impulse_response >> it takes one sample in and spits one out by using a delay line. >> Usually >> implemented as a ring buffer. In C that can be done very elegantly >> with >> pointer gymnastics: >> https://github.com/berndporr/fir1 >> Arne, do you have an efficient way of doing that in JAVA? That would >> be >> nice. >> >> Best, >> /Bernd >> >> On 24/10/16 09:28, Arne Ploese wrote: >>> Am Samstag, den 22.10.2016, 23:25 +0100 schrieb Bernd Porr: >>> >>> (...) >>> >>>> I'm not too crazy about proper FIR filters in JAVA because even >>>> in >>>> C++ >>>> they are just too slow and one would need to write them as JNI >>>> calls >>>> to >>>> C to make them run fast enough (for example a 50Hz notch for ECG >>>> at >>>> 1kHz >>>> requires 500taps at a bandwidth of 4Hz -- in theory!). Not sure >>>> how >>>> excited people here are about C/JNI calls. However the FIR >>>> filter >>>> _design_ = creating an impulse response is useful for a-causal >>>> offline >>>> computation using the convolution operation (but the 1D >>>> convolution >>>> is >>>> already implemented isn't it?). >>> If the Just In Time compiler of the runtime kicks in, it will go >>> fast... >>> You can avoid wrapper code (get|set) and access the fields directly >>> - >>> ist will improve speed even more. Here is an example of a java >>> filtering (converted form the signalprocessing package of octave) I >>> did >>> a couple of years ago: >>> https://sourceforge.net/projects/dsp4 >>> >>> (...) >>> >>> Arne >>> >>> - >>> >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> For additional commands, e-mail: dev-h...@commons.ap
Re: [math] IIR filter library (Butterworth,Bessel,...)
On 24/10/16 14:26, Gilles wrote: Hi. [...] The next step, then (I think) is that as a committer, I can submit a proposal to get this idea established in the Incubator as a podling for a commons sub-project. I suggest to use the sandbox, within "Commons". Stupid queston: where do I find that? In terms of directory structure. Just now the "filter subdir" contains a couple of classes all belonging to the Kalman filter. Then I'll be adding a couple of classes belonging the IIR filters. At some point somebody will be adding classes for FIR filters. Perhaps one could create subdirs: filter - Kalman - IIR - FIR - ... What do you think? Thanks! The one technical question I have is whether it is okay to use Math 3.x as a dependency for now, presumably substituting spin-out former math components in later, to ensure that all of our dependencies are actively maintained. I am going to assume this is okay for reasons of momentum. I think Math 3.x should be fine. I had it at 3.2 and now changed it to 3.6.1 and it works fine. All filters generate the right response. If you need to depend on "Commons Math", please depend on the development version (a.k.a. CM version 4), as it is from there that code must extracted to create candidate components. That makes sense. I use heavily the Complex numbers of Commons Math and the Laguerre root finder. No other dependencies. Whatever you need to depend on for the "filter" package is a strong candidate to examine thoroughly and revamp, if necessary, for inclusion in a component of its own (or "filter" itself). No sure what you mean by this. Can give an example? So, that do I need to do at this point? Best, /Bernd Best regards, Gilles [...] - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org -- http://www.berndporr.me.uk http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [math] IIR filter library (Butterworth,Bessel,...)
P.S.: Just tested it with 3.0.0. There the Laguerre Root function is not yet implemented. For 3.0.0 we needed to exclude the Bessel filter. That works from 3.1.0. On 24/10/16 10:25, Eric Barnhill wrote: > Hi Bernd, sounds like we agree on basically everything there is to do. > > >> I've spent the weekend adding maven support to the IIRJ library. So now >> a simple "mvn install" does the job. Also done the testing properly with >> "mvn test" which generates all the different kinds of impulse responses >> and puts them in different subdirs for evaluation. >> https://github.com/berndporr/iirj > > I can confirm that this builds on Ubuntu Mate 16.04 . > > The next step, then (I think) is that as a committer, I can submit a > proposal to get this idea established in the Incubator as a podling for a > commons sub-project. > > The one technical question I have is whether it is okay to use Math 3.x as > a dependency for now, presumably substituting spin-out former math > components in later, to ensure that all of our dependencies are actively > maintained. I am going to assume this is okay for reasons of momentum. > > So now I must go find a potential project champion..back soon. :) > > Best, > Eric > -- www:http://www.berndporr.me.uk/ http://www.linux-usb-daq.co.uk/ http://www.imdb.com/name/nm3293421/ Mobile: +44 (0)7840 340069 Work: +44 (0)141 330 5237 University of Glasgow School of Engineering Rankine Building, Oakfield Avenue, Glasgow, G12 8LT - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [math] IIR filter library (Butterworth,Bessel,...)
Hi Eric, On 24/10/16 10:25, Eric Barnhill wrote: > Hi Bernd, sounds like we agree on basically everything there is to do. > > >> I've spent the weekend adding maven support to the IIRJ library. So now >> a simple "mvn install" does the job. Also done the testing properly with >> "mvn test" which generates all the different kinds of impulse responses >> and puts them in different subdirs for evaluation. >> https://github.com/berndporr/iirj > > I can confirm that this builds on Ubuntu Mate 16.04 . Thanks for testing. I'm working with xenial actually. > > The next step, then (I think) is that as a committer, I can submit a > proposal to get this idea established in the Incubator as a podling for a > commons sub-project. Thanks! > > The one technical question I have is whether it is okay to use Math 3.x as > a dependency for now, presumably substituting spin-out former math > components in later, to ensure that all of our dependencies are actively > maintained. I am going to assume this is okay for reasons of momentum. I think Math 3.x should be fine. I had it at 3.2 and now changed it to 3.6.1 and it works fine. All filters generate the right response. > > So now I must go find a potential project champion..back soon. :) Excellent. :) /Bernd > > Best, > Eric > -- www:http://www.berndporr.me.uk/ http://www.linux-usb-daq.co.uk/ http://www.imdb.com/name/nm3293421/ Mobile: +44 (0)7840 340069 Work: +44 (0)141 330 5237 University of Glasgow School of Engineering Rankine Building, Oakfield Avenue, Glasgow, G12 8LT - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [math] IIR filter library (Butterworth,Bessel,...)
Opps. Link doesn't work. Do you mean the OCTAVE/MATLAB "filter" command? If you limit that to FIR coefficients then that's equivalent literally to a convolution operation which we already have. (that FIR filtering is the convolution function I have to de-bunk every year in my DSP class because in teaching nothing is filtered in realtime so an FIR filter is sold literally as a convolution operation, however the FIR filter does a convolution as any other filter but it performs it with the help of a delay line which is implemented usually as a ring buffer). Perhaps before we talk about different things. Can we all agree on the definition of an FIR filter: https://en.wikipedia.org/wiki/Finite_impulse_response it takes one sample in and spits one out by using a delay line. Usually implemented as a ring buffer. In C that can be done very elegantly with pointer gymnastics: https://github.com/berndporr/fir1 Arne, do you have an efficient way of doing that in JAVA? That would be nice. Best, /Bernd On 24/10/16 09:28, Arne Ploese wrote: > Am Samstag, den 22.10.2016, 23:25 +0100 schrieb Bernd Porr: > > (...) > >> I'm not too crazy about proper FIR filters in JAVA because even in >> C++ >> they are just too slow and one would need to write them as JNI calls >> to >> C to make them run fast enough (for example a 50Hz notch for ECG at >> 1kHz >> requires 500taps at a bandwidth of 4Hz -- in theory!). Not sure how >> excited people here are about C/JNI calls. However the FIR filter >> _design_ = creating an impulse response is useful for a-causal >> offline >> computation using the convolution operation (but the 1D convolution >> is >> already implemented isn't it?). > If the Just In Time compiler of the runtime kicks in, it will go > fast... > You can avoid wrapper code (get|set) and access the fields directly - > ist will improve speed even more. Here is an example of a java > filtering (converted form the signalprocessing package of octave) I did > a couple of years ago: > https://sourceforge.net/projects/dsp4 > > (...) > > Arne > > - > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > -- www:http://www.berndporr.me.uk/ http://www.linux-usb-daq.co.uk/ http://www.imdb.com/name/nm3293421/ Mobile: +44 (0)7840 340069 Work: +44 (0)141 330 5237 University of Glasgow School of Engineering Rankine Building, Oakfield Avenue, Glasgow, G12 8LT - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [math] IIR filter library (Butterworth,Bessel,...)
On 23/10/16 19:28, Eric Barnhill wrote: >> >>> Interesting! I think also looking at what is already existing in >> the commons library your contribution is clearly on the image processing >> side. Is that right? It's badly needed. I also would love to have it. >> Crucial point here is that this is in signal processing terminology >> a-causal so you essentially have all the data before you start processing >> it (= Fourier Transform, convolution). >> > Yes, I work with 3+D complex valued images so I am always extending code to > handle these cases. This is how I started contributing here. > > >> Looking at what is missing in the apache commons just now is: >> - IIR filters + design (my IIRJ) >> - 2D (image) filtering/convolution (your JVCL) >> - FIR filters (causal with delay line) + design (linear phase filters) >> > I agree this would be a great set of tools. > > Regarding image processing, a source that needs to be considered, to avoid > being redundant, is ImgLib2. ImgLib2 a great library (inherently ND and > generically typed) but I find the learning curve on ImgLib to be pretty > steep and the approach quite specialized. So the question for a possible > commons contribution is, is there room for a more "everyday" filtering > library fitting the commons mission, which benefits from being more readily > intuitive than ImgLib2? I think probably so. Certainly nothing out of line > with the more base components of commons-math. I'd say 2D/3D convolutions with any kernel size and taking care of boundary conditions are something which is pretty generic and should be as part of a math library. It can be used for image processing but also for other tasks. > > As an example in my case, I am interested in extending my image processing > filters to ND but I am not sure this makes sense for commons -- probably What do you mean with ND? > methods overloaded for 2D and 3D would suffice, and if I want to get > fancier I should develop within ImgLib. > > I'm not too crazy about proper FIR filters in JAVA because even in C++ they >> are just too slow and one would need to write them as JNI calls to C to >> make them run fast enough (for example a 50Hz notch for ECG at 1kHz >> requires 500taps at a bandwidth of 4Hz -- in theory!). Not sure how excited >> people here are about C/JNI calls. However the FIR filter _design_ = >> creating an impulse response is useful for a-causal offline computation >> using the convolution operation (but the 1D convolution is already >> implemented isn't it?). > > The commons math guidelines, which I assume for now extend to spin-off > projects, are here http://commons.apache.org/proper/commons-math/ . One > stipulation is no external dependencies beyond commons-math and the Java > SDK. This is one reason I have not tried to integrate my convolution > library which has JOCL and JTransforms dependencies. Well, that's the reason why I'm offering my IIR library because it has no other dependency than commons math. Actually the laguerre solver from commons math makes the Bessel filter design short and sweet. I guess somebody more senior here needs to comment on the dependencies. > > Though I should emphasize that I am a noob myself, I would suspect that > high-performance aspects of signal processing requiring native calls > probably don't suit commons terribly well and should perhaps be some sort > of extension library. That's certainly something I would be happy to work > on too. For example, maybe a base commons-filter library could be worked > out, which could be readily extensible with JNI, GPU, etc. I'd also say that in the 1st instance any low level calls should be avoided and then JNI can be added as an option. That's the reason why I like the IIR filter because it makes sense in JAVA and then if somebody wants to use it for audio then I could add the JNI implementation if there is demand. I've spent the weekend adding maven support to the IIRJ library. So now a simple "mvn install" does the job. Also done the testing properly with "mvn test" which generates all the different kinds of impulse responses and puts them in different subdirs for evaluation. https://github.com/berndporr/iirj Best, /Bernd > > Eric > -- www:http://www.berndporr.me.uk/ http://www.linux-usb-daq.co.uk/ http://www.imdb.com/name/nm3293421/ Mobile: +44 (0)7840 340069 Work: +44 (0)141 330 5237 University of Glasgow School of Engineering Rankine Building, Oakfield Avenue, Glasgow, G12 8LT - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [math] IIR filter library (Butterworth,Bessel,...)
On 22/10/16 19:54, Eric Barnhill wrote: It will be a good fit if the code comes with developer(s) willing to provide support too. Yes of course I would provide support and of course see it through to the release. That comes without saying. Myself as well. One possibility would be to use this new code to spin off the "filter" component and take it further at the same time. Right now I believe the filter component only consists of a Kalman filter(!). IIR filters could be used to turn the filter library into something much more substantial. Indeed. The Kalman filter class is fine but of course that's only a tiny part of signal processing. I have a whole convolution library I wrote at: https://github.com/ericbarnhill/JVCL which includes GPU based finite differences convolutions which are quite speedy (and as always, complex-friendly). With Bernd contributing IIR methods these could be some useful complementary FIR methods. But I think it may violate commons protocols due to the extra dependency on JOCL. Interesting! I think also looking at what is already existing in the commons library your contribution is clearly on the image processing side. Is that right? It's badly needed. I also would love to have it. Crucial point here is that this is in signal processing terminology a-causal so you essentially have all the data before you start processing it (= Fourier Transform, convolution). Then on the other hand if you have realtime streaming data from an ADC it's just scalars as they show up sample by sample at your input (ADC, etc): scalar = myFilter(scalar) which is what both FIR and IIR filters do - well at least how I've been teaching it to my students for 10 years. ;). Then in terms of the filter design the IIR filters are derived from analogue filters whereas FIR realtime filters use the (mirrored) impulse response for its coefficients. Looking at what is missing in the apache commons just now is: - IIR filters + design (my IIRJ) - 2D (image) filtering/convolution (your JVCL) - FIR filters (causal with delay line) + design (linear phase filters) I'm not too crazy about proper FIR filters in JAVA because even in C++ they are just too slow and one would need to write them as JNI calls to C to make them run fast enough (for example a 50Hz notch for ECG at 1kHz requires 500taps at a bandwidth of 4Hz -- in theory!). Not sure how excited people here are about C/JNI calls. However the FIR filter _design_ = creating an impulse response is useful for a-causal offline computation using the convolution operation (but the 1D convolution is already implemented isn't it?). Also worth mentioning, I have a good deal of wavelet code in Java and have given some thought to designing a nice match between OO design and wavelet analyses. This could become part of the filter package. Wavelets come very handy for many applications. It would be good to be able to generate them in 1D and 2D. Plus also the scaling function. If eventually we had an effective FIR filter as a JNI call then these could be also used for example for realtime ECG heartbeat detection. /Bernd - Eric -- http://www.berndporr.me.uk http://www.linux-usb-daq.co.uk http://www.imdb.com/name/nm3293421/ +44 (0)7840 340069 - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
Re: [math] IIR filter library (Butterworth,Bessel,...)
Hi both, great to get such a positive response. On 22/10/16 15:59, Gilles wrote: > Hello. > > On Sat, 22 Oct 2016 12:51:03 +0200, Eric Barnhill wrote: >> Dear Bernd, >> >> Thank you for this interesting contribution. I use these sorts of >> filters >> frequently so I will be interested to give it a look. I just build my >> Butterworths in k space so I will be interested to see how yours work >> differently. Sorry I meant I used the laguerre solver for Bessel. I'm sure we both did a similar approach for Butterworth. Either way the library is written in a way that it's very modular and you can do it the traditional way by providing analogue lowpass poles/zeroe and then the library does the rest for you or you can directly put complex conjugate pairs into a biquad cascade. Hoping that people also come up with other filter patches such as Linkwitz, for example. >> >> The math package is in flux as others can tell you, > > This is a mild description... ;-) > > To better appreciate the situation, I suggest to browse through the > "dev" ML archive (starting around last May). OK. I'll have a read! > > The bottom line is that we critically need contributors to help > maintain, and continue developing, selected packages from the > Commons Math codebase. I'd be up for it (obviously with reason). I've been teaching DSP for many years and now developing a couple of Android apps for which I need filters so that will be ongoing and happy to maintain packages and add new ones. > >> however I think such >> functionality fits the commons mission quite well and I am certainly >> happy >> to help support the code to give it a home here some how. > > It will be a good fit if the code comes with developer(s) willing > to provide support too. Yes of course I would provide support and of course see it through to the release. That comes without saying. > >> >> Best, >> Eric >> On 22 Oct 2016 01:35, "Bernd Porr" <m...@berndporr.me.uk> wrote: >> >>> Dear all, >>> >>> I've created an IIR filter library: >>> https://github.com/berndporr/iirj >>> >>> It's a re-coded version of my / Vinnie's DSP library originally written >>> in C++. I've spent quite some time to make it work with the apache >>> Complex type and I've also used the polynomial solver for the >>> Butterworth filters. >>> >>> It implements Butterworth, Elliptic, Bessel and Chebyshev Type I. The >>> library is very modular and adding new filter types is easy as adding >>> different filter topologies. >>> >>> Is there interest in fully integrating this into math commons? > > In "Commons Math" per se, no (cf. above) but as its own component, > yes. > >>> I'm aware that I don't have any maven script just now and the >>> documentation is probably not complete for apache but before I >>> embark on >>> it I'd rather ask if there is interest. > > If Eric is willing to help you, it's a good start; but you > should also be willing to stay around here long enough to > work with us towards an official release of that code. > And if, in addition, you can offer advice, and help with > other tasks, that will be really great. Sure. Def happy to stay on till the release and the ongoing maintenance. That's what I had in mind anyway. It's rather that I need you especially in terms of the build scripts which I have been avoiding for too long and need to catch up with them. > > Welcome and best regards, > Gilles Thanks! Best regards /Bernd > >>> >>> Best, >>> /Bernd Porr >>> -- >>> www:http://www.berndporr.me.uk/ >>> http://www.linux-usb-daq.co.uk/ >>> http://www.imdb.com/name/nm3293421/ >>> Mobile: +44 (0)7840 340069 >>> Work: +44 (0)141 330 5237 >>> University of Glasgow >>> School of Engineering >>> Rankine Building, Oakfield Avenue, >>> Glasgow, G12 8LT >>> > > > - > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > -- www:http://www.berndporr.me.uk/ http://www.linux-usb-daq.co.uk/ http://www.imdb.com/name/nm3293421/ Mobile: +44 (0)7840 340069 Work: +44 (0)141 330 5237 University of Glasgow School of Engineering Rankine Building, Oakfield Avenue, Glasgow, G12 8LT - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org
[math] IIR filter library (Butterworth,Bessel,...)
Dear all, I've created an IIR filter library: https://github.com/berndporr/iirj It's a re-coded version of my / Vinnie's DSP library originally written in C++. I've spent quite some time to make it work with the apache Complex type and I've also used the polynomial solver for the Butterworth filters. It implements Butterworth, Elliptic, Bessel and Chebyshev Type I. The library is very modular and adding new filter types is easy as adding different filter topologies. Is there interest in fully integrating this into math commons? I'm aware that I don't have any maven script just now and the documentation is probably not complete for apache but before I embark on it I'd rather ask if there is interest. Best, /Bernd Porr -- www:http://www.berndporr.me.uk/ http://www.linux-usb-daq.co.uk/ http://www.imdb.com/name/nm3293421/ Mobile: +44 (0)7840 340069 Work: +44 (0)141 330 5237 University of Glasgow School of Engineering Rankine Building, Oakfield Avenue, Glasgow, G12 8LT - To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org