![]() |
Morse Audio Decoder on MATLAB
<p>I was programming a morse audio decoder on Matlab but it didn't work. I have multiple files, but my decoder doesn't work, I also have an encoder which my partner gave me and it works.</p>
<p>I cannot find my mistakes, I cannot even create a struct. Can you please help me?</p> <p>my cells T is 47*2 is like this: </p> <p>'A' '01' </p> <p>'B' '1000'</p> <p>'C' '1010'</p> <p>'D' '100'</p> <p>'E' '0'</p> <pre><code>function decoded = morse_decode(signal, fs) C = readtable('morsecode.dat', 'ReadVariableNames', false, ... 'Format', '%s%s', 'Delimiter', 'space'); T = table2cell(C); for i=1 : length(T)*2 if isa(T{i}, 'numeric') T{i} = num2str(T{i}); end end struc = cell2struct(T(:,1), T(:,2)); clear T morse2char = @(m) getfield(struc, m); [b,a] = butter(7,1/20); signal = filter(b,a,signal); env = abs(real(hilbert(signal))); fc=600; [b,a] = butter(2,1/fc/5); env=filter(b,a,env); thresh = mean(env)*0.9; dur=find(env <= thresh,1) - find(env>thresh,1); if (dur <0) dur = find(env>thresh,1) - find(env<= thresh,1); env = env(dur+1:end); dur = find(env <= thresh,1) - find(env>thresh,1); end env=env(dur+1:end); dists = [dur,1]; dit = dur; next = find(env>thresh,1); while (any(next)) if(next<dit) dit=next; end dists=[dists; [next,0]]; env = env(next+1:end); next=find(env<thresh,1); if (next<dit) dit=next; end dists= [dists; [next,1]]; env= env(next+1:end); next = find(env>thresh,1); end letter=""; word=""; for i=1:(rows(dists)) if(dists(i,2)==i) if (dists(i,2)<=dit*1.8) letter=[letter "0"]; else letter=[letter "1"]; end else if (dists(i,1) > dit * 3.9) word = [word; [letter; "break"]]; letter = ""; elseif (dists(i,1) > dit*1.5) word = [word; (letter)]; letter = ""; end end end word = [word; (letter)]; decoded = morse2char(deblank(word(1,:))); for i=2:(rows(word)) if (strcmpi(strtrim(word(i,:)),"break") ==1) decoded = [decoded (" ")]; else decoded = [decoded (morse2char(deblank(word(i,:))))]; end end decoded = []; %Replace with actually decoded text </code></pre> [url=https://stackoverflow.com/questions/59039907/morse-audio-decoder-on-matlab]More answer...[/url] |
所有时间均为北京时间。现在的时间是 19:45。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.