tag:blogger.com,1999:blog-62209957741500553772024-03-15T18:11:27.941-07:00The Numerix-DSP BlogAll things DSP, AI , ML, IoT and more ...Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.comBlogger122125tag:blogger.com,1999:blog-6220995774150055377.post-37206250432160218472024-03-08T11:07:00.000-08:002024-03-08T11:07:24.284-08:00Plotting a Spectrogram In Python, Using Numpy and MatplotlibWhen performing frequency domain (FFT) based processing it is often useful to display a spectrogram of the frequency domain results. While there is a very good SciPy spectrogram function, this takes time domain data and does all of the clever stuff. However if you are processing data in the frequency domain you often just want to build the spectrogram dataset and keep appending FFT results to Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-20844469534683354182024-01-12T05:25:00.000-08:002024-01-12T05:25:39.833-08:00The 33rd Annual Running Of The University Of Oxford Digital Signal Processing Course Will Be Held Online Again, In 2024The course first moved online in 2020 and has received excellent reviews from the attendees.The course will run from Monday 8th April to Friday 17th May 2024, with live online classes one afternoon per week.Based on the classroom course, Digital Signal Processing (Theory and Application), this online course consists of weekly live online tutorials and also includes a software lab that can be run Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-17067525132140782832023-12-29T08:59:00.000-08:002023-12-29T08:59:43.545-08:00SigLib Now Includes Kalman Filtering FunctionsOver the holiday period I decided to refresh my knowledge of Kalman filters by watching the excellent video series here: Kalman Filter YouTube Lessons.Here is a diagram to show the architecture of the Kalman Filter:As a result, I have now added 1D and 2D Kalman filters to the SigLib DSP Library, which can be found here: https://github.com/Numerix-DSP/siglib.In the comments here https://Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-73767182790155752772023-11-08T09:31:00.004-08:002023-11-17T10:29:27.328-08:00Deploying Matlab On ARM Using CodegenSeveral years ago I worked on two projects that required code to be deployed on ARM devices, where the original algorithms had been developed in Matlab. I researched Matlab's Codegen capabilities and realized that it has some very useful features so I've generated a generic example, with no customer code, to demonstrate the capabilities.Among the many great features of Codegen is Whole Project Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-15195699383982900792023-07-18T09:13:00.000-07:002023-07-18T09:13:20.855-07:00The 31st Annual Running Of The University Of Oxford Digital Signal Processing Course Will Be Held Online Again, In 2023 The 31st annual running of the University Of Oxford Digital Signal Processing course will include an online edition that will be running over a six week period, from Monday 25th September to Friday 3rd November 2023.The course first moved online in 2020 and has received excellent reviews from the attendees.Based on the classroom course, Digital Signal Processing (Theory and Application), Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-76623100611929915972023-06-19T04:43:00.002-07:002023-07-21T01:30:37.576-07:00Simple Python Data Plotter For DSP Log FilesI often log DSP data to .log files, which are typically text files with comma separated columns. In order to plot the data I use a variant of the following Python file, which extracts the data columns and plots the results.For easier human reading, I typically use ", " for separating the columns, rather than just a single ",". This requires the use of the separator specifier and the use of the&Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-11789567709672497092023-03-20T17:10:00.015-07:002023-04-08T03:02:29.034-07:00Are Chat-GPT and Google Bard The New Frontier For Writing DSP Code?I needed to take a break from doing some consultancy work and writing code for customers but the weather is very British today so rather than brave the outdoors I thought I'd have a play with Chat-GPT and see how good it is at writing DSP code.I asked Chat-GPT the following: "write C code for FIR filter".Here are the results, along with the supporting comments provided by Chat-GPT:Here is an Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-16058861155117608192022-11-14T16:58:00.021-08:002023-11-22T06:34:10.412-08:00DSP Equations In LatexI was recently documenting some DSP equations in Latex and couldn't find any suitable examples so I've put them together and thought I'd share.The Fourier Transform\large \mathscr{F} \normalsize (x(t))=\int_{-\infty}^{\infty}x(t)e^{-j \omega t}dtRendering$$\large \mathscr{F} \normalsize (x(t))=\int_{-\infty}^{\infty}x(t)e^{-j \omega t}dt$$The Discrete Time Fourier TransformX(k) = \sum_{n=0}^{N-1}Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-28437970468546337102022-07-15T03:40:00.002-07:002022-07-15T03:40:36.045-07:00The 30th Annual Running Of The University Of Oxford Digital Signal Processing Course Will Be Held Online Again, In 2022The 30th annual running of the University Of Oxford Digital Signal Processing course will include a second online edition that will be running over a six week period, from Monday 17 Oct 2022 - Friday 25 Nov 2022.The course first moved online in 2020 and has received excellent reviews from the attendees.Based on the classroom course, Digital Signal Processing (Theory and Application), this online Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-45990503276314247802022-06-21T03:10:00.002-07:002022-07-15T03:46:49.962-07:00DSP Tech Brief : Notes On Notch Filtering - IIR vs. FIR A very simple way to implement a notch filter is to use and FIR filter and place a conjugate pair of zeros on the unit circle to define the location of the notch, as shown in the following z-Domain diagram:Testing this filter in the application showed that while the initial results were good, because the interference was removed, there was a subtle negative impact on the performance of the Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-32637498791020594012022-01-23T15:44:00.004-08:002022-01-23T15:44:52.854-08:00Analog I/O Example For The NXP LPC55S69-EVK I recently wrote some DSP code for the excellent NXP LPC55S69-EVK.The standard audio I/O example for the LPC55S69-EVK implements a very simple piece of code to read in an array of audio data from the stereo codec and then write it back. It does not show how to access that data or process it using background DSP functions.I have written an example that uses interrupts, ping-pong buffers and Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-2992479527878402442022-01-23T15:41:00.007-08:002022-01-23T15:45:11.915-08:00Version 10.00 Of The SigLib DSP Library Released And Is Now Fully Open SourceSigLib V10 now includes enhanced functions for training and inferring Artificial Intelligence and Machine Learning Convolutional Neural Networks (CNNs). In addition to the traditional DSP functions, the SigLib ML functions are designed for embedded applications such as vibration monitoring etc. They are architected for Edge-AI applications and have been written for the highest level of MIPS and Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-73488984446895121322021-11-05T03:25:00.002-07:002021-11-05T03:25:16.508-07:00C/C++ Header Only Library For Reading And Writing .wav FilesI've recently been processing a bunch of .wav files in both C and C++, in order to simplify the transition betweeen the two environments I extracted the .wav files from the Numerix Host Library into a header only library that is now available here: https://github.com/Numerix-DSP/wav_fileIt has a very simple API so I hope you find it useful.Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-31696195210589899312021-10-19T04:26:00.001-07:002021-12-18T08:23:52.737-08:00Installing Clang on WSL Ubuntu - Solved I recently had to install clang on WSL Ubuntu and found a few conflicts.The following commands solved the problem:sudo apt install libc6=2.31-0ubuntu9.2 libc-bin=2.31-0ubuntu9.2sudo aptitude install clang-12 -f -ysudo aptitude install clang -yI then installed clang tidy using:sudo aptitude install clang-tidy -yReal Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-41802062375826979532021-10-13T15:01:00.003-07:002021-10-13T15:29:40.521-07:00Processing .wav File Frames Through A Tensorflow Convolutional Neural Network I was recently developing a Machine Learning application that would predict classes of audio stored in .wav file.The .wav file frames are easily processed using numpy to include functions such as the Fast Fourier Transform (FFT).When it came to processing the frames in the neural network I was stumped by how to translate the frames into a Tensorflow dataset and despite my best efforts I Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-23341853932856406162021-06-24T02:12:00.001-07:002021-12-23T05:21:01.922-08:00Profiling C/C++ Code Using GCC And GprofI recently had to profile a large C code project, to identify functions to target for further optimization and I used gprof for this task.In this blog post I'm going to take the dot-product code from one of my earlier posts and use that to demonstrate how to profile an application. The original code is available here: https://blog.numerix-dsp.com/2013/01/Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-72111925515552415352021-03-12T06:04:00.008-08:002021-03-12T06:04:40.726-08:00A Selection Of DSP Papers Written By John Edwards, From The Archive ...Acoustic Room Response Analysis – 1997 – http://www.eetimes.com/document.asp?doc_id=1255049Frequency Domain Applications - 2006– http://www.techonline.com/electrical-engineers/education-training/tech-papers/4130003/Frequency-Domain-Applications/viewpdfFrequency Domain Theory - 2006– http://www.techonline.com/electrical-engineers/education-training/tech-papers/4129714/Frequency-Domain-Theory/Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-23871660815106742972021-03-03T10:00:00.004-08:002022-01-05T10:37:35.541-08:00Integrating Visual Studio Compiler Tools With Visual Studio CodeIntegrating Visual Studio compiler tools with Visual Studio Code is a really powerful solution for developing and debugging C/C++ code.Assuming you have installed Visual Studio Code and Visual Studio compiler tools then before continuing I highly recommend installing the C/C++ for Visual Studio Code extension.Here are the steps I have for the integration process:Enable a "VS 2022 Community Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-6641648662510124702021-01-10T08:03:00.002-08:002021-01-10T08:05:20.287-08:00A Simple And Portable C Command Line Option ParserI recently had to write some cross platform code with a simple command line parser.Rather than get caught up in any open source licensing issues I wrote my own.To use the code, just add your options into parse_command_line () and update the messages in show_help (). Here it is, to use as you wish.// Command line parser// Copyright (c) 2021 Sigma Numerix Ltd#include <Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-65481137731794941352020-12-22T02:59:00.002-08:002020-12-22T02:59:55.054-08:00Version 9.00 Of The SigLib DSP Library ReleasedVersion 9.00 is the latest version of the SigLib Digital Signal Processing (DSP) library and is available now from http://www.numerix-dsp.com/siglib.html.V9.00 now includes functions for training and infering Artificial Intelligence and Machine Learning Convolutional Neural Networks (CNNs). The SigLib ML functions are designed for embedded applications such as vibration montioring etc. They are Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-33395314598923854302020-12-01T01:06:00.001-08:002020-12-01T01:06:15.525-08:00Upcoming tinyML Foundation Talk - Low MIPS & Memory Machine Learning Industrial Vibration Monitoring SolutionJohn Edwards will be presenting a tinyML Talk on December 22, 2020 “Low MIPS & Memory Machine Learning Industrial Vibration Monitoring Solution - AKA Not All AI Applications Are Cat v Dogs on Facebook ;-)”Further details are available here: https://forums.tinyml.org/t/Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-78722825642971865692020-10-22T01:51:00.002-07:002020-10-22T01:51:53.104-07:00eBook: 8 DSP Fundamentals Every Electronics Engineer Should Know A guide to the core knowledge required for DSP application development and feature engineering – by John Edwards and Dunstan Power of Bytesnap Design.For assistance with your Digital Signal Processing project, please contact Dunstan at Bytesnap or John at Sigma Numerix.Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-90332765915763853522020-09-02T08:59:00.007-07:002020-10-22T01:47:48.998-07:00What To Consider When Integrating DSP Algorithms Here is a little article I wrote for Electronics Weekly, with my good friend Dunstan Power from ByteSnap Design.Click on the image below to view the full article. #signalprocessing #dsp #machinelearningReal Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-83500929040231111492020-08-27T09:39:00.003-07:002020-10-22T01:52:27.168-07:00Answers To Questions From The Data Science Festival Lunch & Learn "The Frequency Domain And How It Can Be Used To Aid Artificial Intelligence"Thank you very much for attending the Lunch & Learn.The presentation can be downloaded from here: https://www.numerix-dsp.com/ai.The recording is available on the Data Science Festival YouTube channel : https://www.youtube.com/datasciencefestival.Direct link: https://www.youtube.com/watch?v=6XBM0_G7iwk.Q. Can you give definition of 'DSP'?A. Yes. DSP is the digital processing of real-time Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0tag:blogger.com,1999:blog-6220995774150055377.post-71823855543864205102020-08-24T06:15:00.000-07:002020-08-24T06:15:05.933-07:00Data Science Festival Lunch & Learn – The Frequency Domain And How It Can Be Used To Aid Artificial IntelligenceReally pleased to have been invited to present at the Data Science Festival Lunch and Learn, this Thursday 27th.The topic is "The Frequency Domain And How It Can Be Used To Aid Artificial Intelligence".I will be presenting a general introdcuction and a high level overview of a project that I've been working on over the last few months.Further details and registration are here : https://Real Gone Geekhttp://www.blogger.com/profile/13978105990217870891noreply@blogger.com0