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 件)

カテゴリ

ヘルプ センター および File Exchange で Measurements and Feature Extraction についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by