1
$\begingroup$

I have a Masters Degree in DSP but all I learnt there is theory. I would like to complete some projects at home which I can add in my resume to showcase my skills and to get jobs in industry. But I have not found anything after googling. So can someone here please guide me what should I do?

P.S.:

  1. I am not interested in image processing.

  2. I would like to start projects on Matlab/Octave or Python and then writing the same code in Embedded C for a DSP hardware.

$\endgroup$
10
  • 1
    $\begingroup$ Hi! Welcome here. Sadly, this is not an "asking for ideas" platform (you're looking for a discussion forum). Your question is asking for opinions, not "correct" answers, so I'm afraid I'll have to vote to close it as opinion-asking. See: What questions should I avoid asking? $\endgroup$ – Marcus Müller Oct 6 '20 at 18:53
  • 1
    $\begingroup$ (also, thinking that a project that someone else suggests to you will land you a job seems a bit naive. You say you want to showcase your skills, but you don't even mention what these are – this is not going to take you far. Get expertise first, impress with it after.) $\endgroup$ – Marcus Müller Oct 6 '20 at 18:55
  • 1
    $\begingroup$ Yup, StackExchange wants nice tidy technical questions with tidy technical answers. If you want to troll for ideas, reddit.com/r/dsp is a fine place. They'll tell you to do something cool using gnuradio, if you want to do radio, or give you pointers to some audio tool if you want to do audio, etc. Really, though, asking "what can I do with DSP" is like asking "what can I do with a pile of metal and metal working tools?" The answer is -- anything. $\endgroup$ – TimWescott Oct 6 '20 at 19:18
  • 1
    $\begingroup$ @Anudocs great, so we close this question as duplicate then? (end of sarcasm) That there's another question that didn't get moderated away doesn't make yours any more on-topic. $\endgroup$ – Marcus Müller Oct 6 '20 at 20:06
  • 2
    $\begingroup$ you might want to get something with a SHArC in it. $\endgroup$ – robert bristow-johnson Oct 7 '20 at 6:14
1
$\begingroup$

There's an unlimited amount of projects you can do... The extend depends on how much you want to (or you can) turn your home into a lab ?

Audio projects can range from software synthesizers, multimedia players, to aduio compression algorithms, micophone array based advanced imaging, and to all sorts of acoustic magic. You would need alot of electronics and acoustic skills, in addition to DSP, for these projects though.

Hardware projects will also cost extra bucks & mess, compared to pure software projects...

Also, eventhough you've got your masters degree, just still need to polish your DSP skills, and make sure that you don't miss any serious topics in the fundamentals. The best way to do is to code the concepts in a book such as Discrete-Time Signal Processing. Implement (or verify) various algorithms and theorems there. Pay attention to convolutions, LCCDE recursions, filter design, sampling, DFT, and FFT topics. Write your own functions, simulations and libraries. Make theoretical predictions, and try verifying them with simulations... Use Matlab or Octave at this stage.

Have you done some Adaptive Filtering? Why not implement them in realistic applications? Try channel equalisation, echo cancellations, noise reduction, system identification, line enhancement, prediction, compression etc. Try LMS, RLS or their variants.

In the low-level software side, try improving your C / C++ and Assembler programming-debugging skills. Chose platforms such as Intel/AMD or ARM-based CPUs. I bet you will benefit from learning how to program MMX, SSE, AVX SIMD-vector extensions of these CPUs. And get a general glimpse on compilers, switches, libraries, open source development, various tricks and hardware properties and limitations of PCs.

Learn some operating system programming too. Windows,Linux,OS, and lately but more attractively Mobile Android. Learn how to use basic compilers for these platforms and their working mechanisms.

Start with the simplest and cleanest hardware: Arduino. Learn how to code it in its IDE. That's the most user friendly mCU ever. Though, it's a limited one, but you can still do a lot with it. It has an ADC-DAC; you may wish to try sampling some sources and processing them. Best is to go with a simple microphone shield (an attachement board to an Arduino). Record audio, process it, and output some signals based on it. You will learn a lot about USB connection, Serial (RS-232) communication, SPI, I2C communication protocols, motor drive examples, various sensors involving 9DOF acceleromoter-gyro-magnetic sensors, distance measurement sensors, light measuring sensors, temperature, pressure, gas sensors... You will have a lot to do with them... You may also learn practical Kalman filtering for perfecting your measurement results too.

You should support your Arduino with some basic external hardware, such as buffers, filters and actuators. It's good to learn connecting/interfacing them to the mcu, for practical embedded DSP.

Expand your hardware with a Raspberry PI, the most friendly electrically interactable PC platform with ARM based multi-core CPU and a Linux based OS in it.

Add some simple programmable SDR-RTL (software defined radio) kits to your Raspberry Pi to turn it into an RF receiver and data processing machine. You can receive signals from radio stations, Satellites, AirPlanes, wireless phones or any RF source in its range! You can write C-code to implement your analog/digital decoding algorithm. That makes a set of plain advanced DSP projects.

You can also progress with some more industrial MCUs from ST, NXP, Texas, ADI or any similar vendor. They are producing ARM complient cores. HEnce once you learn ARM architecture you will be confident in all of these platforms.

One good thing is, Arduino IDE also supports an STM32 based development card just as it supports ative Arduino UNO cards. So You can transit into ST programming from Arduino IDE and go more professional with ST native development later.

You can further add ADI BlackFin, SHArC, or Texas TMS based DSP processors.

Furthermore, last decade have withnessed great progress in Big-Data processing using GPU computing; so you will benefit form learning some parallel programming using Nvidia CUDA or openCL...

All these will take some time and patience.

$\endgroup$
4
  • 1
    $\begingroup$ Thats really helpful answer. I appreciate for your time to answer this. $\endgroup$ – Anudocs Oct 7 '20 at 14:40
  • 1
    $\begingroup$ @Fat32. Good for you for helping Anudocs. $\endgroup$ – Richard Lyons Oct 7 '20 at 16:48
  • $\begingroup$ @RichardLyons Yes sometimes giving some advice is morre valuable than solving a problem... $\endgroup$ – Fat32 Oct 7 '20 at 16:50
  • $\begingroup$ Point against MATLAB: closed-source. Can't see code, can't learn from. (But it does often have superior documentation to get ideas from). And, solid advice on implementing stuff from scratch, just not caveman-style; C should be for optimization's/computer science sake, not DSP - only hours wasted fighting the code instead of understanding and visualizing algorithms. $\endgroup$ – OverLordGoldDragon Oct 7 '20 at 17:09
0
$\begingroup$

Answering my question because I found a good source to start programming in DSP and to help someone who is in the same situation as mine:

http://greenteapress.com/thinkdsp/thinkdsp.pdf

The author uses programming-based approach to teach DSP.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.