hello,
as part of my self project, I'm trying to do morse encoder and decoder from sound,
I'm at the part before the decoder, I'm receiving the signal from the spectrogram and I convert it to a "digital signal" that is equal to the morse code but I don't know how to convert it to dash, dot, and space between words
I received a signal (for example) after some counter manipulations to filter the spectrogram signal
this plot its vector of [1x1499 values]
and the value of code after: - . . . . -
isn't good enough because I want it exactly like this: - . ... -
- . ... - = test (t=- ,e=. ,s=... ,t=- )
and of course, I want to do it generic and not specific for this example morse combination code.

댓글 수: 1

dpb
dpb 2021년 11월 9일
That's a fairly clean-looking signal -- I think I'd try findpeaks to locate the peaks and the time delay between each. The peak magnitude >~80 --> dash and >~40 --> dot look to to be a good selection level. Finding the delays longer than the (illegible) time between peaks would appear to be all needed for the spaces.

댓글을 달려면 로그인하십시오.

 채택된 답변

John D'Errico
John D'Errico 2021년 11월 9일

1 개 추천

As @dpb suggested:
  1. Use findpeaks to locate each peak. (Ignore the tiny ones. So anything that is significantly above the baseline.)
  2. The value of the peak will indicate if it is a dash or a dot. high peaks indicate dashes. Low peaks indicate dots.
  3. Next, check the time between each successive peak. You can almost think of this set of times as a new series. The time between peaks is fairly uniform, except when there is a space. A space is indicated when there is a large chunk of time between successive peaks.
Easy enough. Your job to write the code though.

추가 답변 (0개)

카테고리

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by