小乖小傻 发表于 2008-10-11 11:35

matlab语言转化问题

1.编写一个程序,读取一句英语短语,并将其编制成莫尔斯码,再用一个程序将莫尔斯码变成英语。

科技在线 发表于 2008-10-11 12:41

程序我倒不回编,给后面的高手点资料,帮忙解决问题
莫尔斯电码(Morse code)是美国人莫尔斯于1844年发明的,由点(.)、划(-)两种符号组成。

1、一点为一基本信号单位,一划的长度=3点的长度。

2、在一个字母或数字内,各点、划之间的间隔应为两点的长度。

3、字母(数字)与字母(数字)之间的间隔为7点的长度。

字符 电码符号 字符 电码符号
A ●— N —●
B —●●● O ———
C —●—● P ●——●
D —●● Q ——●—
E ● R ●—●
F ●●—● S ●●●
G ——● T —
H ●●●● U ●●—
I ●● V ●●●—
J ●——— W ●——
K —●— X —●●—
L ●—●● Y —●——
M —— Z ——●●


数字 电码符号 标点符号 电码符号
1 ●———— ? ●●——●●
2 ●●——— / —●●—●
3 ●●●—— ( ) —●——●—
4 ●●●●— — —●●●●—
5 ●●●●● 。 ●—●—●—
6 —●●●●
7 ——●●●
8 ———●●
9 ————●
0 —————
摩尔斯电码
以下列出摩尔斯电码

摩尔斯电码
A .-
I ..
Q --.-
Y -.--
7 --…
B -…
J .---
R .-.
Z --..
8 ---..
C -.-.
K -.-
S …
1 .----
9 ----.
D -..
L .-..
T -
2 ..---
0 -----
E .
M --
U ..-
3 …--
. .-.-.-
F ..-.
N -.
V …-
4 ….-
? ..--..
G --.
O ---
W .--
5 …..
, --..--
H ….
P .--.
X -..-
6 -….
1 ●—滴哒
2 ●●— 滴滴哒
3 ●●●—— 滴滴哒哒
4 ●●●●— 滴滴滴滴哒
5 ●●●●● 滴滴滴滴滴
6 —●●●● 哒滴滴滴滴
7 ——●●● 哒哒滴滴滴
8 —●● 哒滴滴
9 —● 哒滴
0 —哒

sogooda 发表于 2008-10-11 16:23

回复 楼主 小乖小傻 的帖子


function morse(varargin)

% MORSE converts text to playable morse code in wav format
%
% SYNTAX
% morse(text)
% morse(text,file);
%
% Description:
%
%   If the wave file name is specified, then the funtion will output a wav
%   file with that file name.If only text is specified, then the function
%   will only play the morse code wav file without saving it to a wav file.
%
% Examples:
%
%   morse('Hello');
%   morse('How are you doing my friend?','morsecode.wav');
%
%   Copyright 2005 Fahad Al Mahmood
%   Version: 1.0 $$Date: 05-Jun-2005

text = varargin{1};
if nargin==2
    file = varargin{2};
end

Fs=11025;
load wav;
Dit = wav(1106:2121);
ssp = wav(2121:3133);
Dah = wav(3133:6176);
lsp = wav(6176:23022);

% Defining Characters & Numbers
A = ;
B = ;
C = ;
D = ;
E = ;
F = ;
G = ;
H = ;
I = ;
J = ;
K = ;
L = ;
M = ;
N = ;
O = ;
P = ;
Q = ;
R = ;
S = ;
T = ;
U = ;
V = ;
W = ;
X = ;
Y = ;
Z = ;
period = ;
comma = ;
question = ;
slash_ = ;
n1 = ;
n2 = ;
n3 = ;
n4 = ;
n5 = ;
n6 = ;
n7 = ;
n8 = ;
n9 = ;
n0 = ;

text = upper(text);
text1 = text + 0
panjang=length(text1);
i=1;
for j=1;panjang
    if text1(j)~= 32
      text(i)=text1(j);
      i=i+1;
    end
end
vars ={'period','comma','question','slash_'};
morsecode=[];
for i=1:length(text)
    if isvarname(text(i))
    morsecode = ;
    elseif ismember(text(i),'.,?/')
      x = findstr(text(i),'.,?/');
      morsecode = ;
    elseif ~isempty(str2num(text(i)))
      morsecode = )];
    elseif text(i)==' '
      morsecode = ;
    end
    morsecode = ;
end
if exist('file','var')
    wavwrite(morsecode,11025,16,file);
else
    wavplay(morsecode);
end

小乖小傻 发表于 2008-10-12 12:56

回复 板凳 sogooda 的帖子

嘻嘻:lol :@)
页: [1]
查看完整版本: matlab语言转化问题