求助,一道matlab的题目!

1.编写一个程序,读取一句英语短语,并将其编制成莫尔斯码,再用一个程序将莫尔斯码变成英语。莫尔斯码是世界上最著名的编码机制,是1832年由SamuelMorse创立的,用... 1. 编写一个程序,读取一句英语短语,并将其编制成莫尔斯码,再用一个程序将莫尔斯码变成英语。
莫尔斯码是世界上最著名的编码机制,是1832年由Samuel Morse创立的,用于电报系统使用。莫尔斯码编码规则如下:①字母、数字和一些特殊符号(如圆点、逗号、分号)用一系列指定的点和线表示;②单词之间用三个空格分开,没有点和线;③编码字母之间用一个空格。
字符/数字 代码 字符/数字 代码 字符/数字 代码
A .- M ―― Y -.――
B -... N -. Z ――..
C -.-. O ――― 1 .――――
D -.. P .――. 2 ..―――
E . Q ――.- 3 ...――
F ..-. R .-. 4 ....-
G ――. S ... 5 .....
H .... T - 6 -....
I .. U ..- 7 ――...
J .――― V ...- 8 ―――..
K -.- W .―― 9 ――――.
L .-.. X -..- 0 ―――――
展开
 我来答
wacs5
2010-10-31 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2808万
展开全部
用法:
morsecode=morse('matlabsky baidu wacs5',0) %编码
srccode=morse(morsecode,1) %解码

morsecode(2)='.'; %修改码
srccode=morse(morsecode,1) %错误的morse码进行解码

=============以下是m文件==========
function Dst=morse(Src,Flag)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%Author : wacs5
%%Email : wacs5@126.com
%%Date : 20101031
%%Function : morse(莫斯密码)编码和解码
%%Argument : Src为待编码/解码的字符串
%% : Flag=0为编码,Flag=1为解码
%%Return : Dst为完成的编码/解码的字符串
%%Called Mtb : disp,find,isempty,isequal,length,nargin,strrep,warning
%%Example:
%% : morsecode=morse('matlabsky baidu wacs5',0)
%% : srccode=morse(morsecode,1)
%% : morsecode(2)='.'; srccode=morse(morsecode,1) %错误的morse码
%%See also : http://www.matlabsky.com
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if nargin==1
Flag=0; %缺省为编码
end
Dst=[];

SrcAlpha=['A':'Z','1':'9','0']; %原始字母
EncAlpha={'.-','-...','-.-.','-..','.','..-.','――.','....','..','.―――','-.-','.-..','――','-.','―――','.――.','――.-','.-.','...','-','..-','...-','.――','-..-','-.――','――..','.――――','..―――','...――','....-','.....','-....','――...','―――..','――――.','―――――'}; %相应的morse码

if Flag==0
disp('Encoding'); %编码
for i=1:length(Src)
if Src(i)>='a' && Src(i)<='z' %小写转大写
Src(i)=Src(i)-32;
end
index=find(SrcAlpha==Src(i)); %查找待编码字母在SrcAlpha中的位置
if isempty(index) %不在字典中
Dst=[Dst,' ']; %两个空格。因为字母后面已经有一空格
else
Dst=[Dst,EncAlpha{index},' ']; %每个morse码后加一空格
end
end
else
disp('Decoding'); %解码
if Src(end)~=' ' %最后一个不是空格,添加一个空格,仅为了方便编程
Src(end+1)=' ';
end
SpaceIndex=find(Src==' '); %找出所有空格位置
SpaceIndex=[0,SpaceIndex]; %将0加入,也仅仅是为了方便编程
for i=1:length(SpaceIndex)-1
Code=Src(SpaceIndex(i)+1:SpaceIndex(i+1)-1);%获得morse密文
if isempty(Code) %连续两个空格
Dst=[Dst,' ']; %译文也为空格
else
found=0; %是否在morse编码字典中存在
for j=1:length(EncAlpha)
if (isequal(EncAlpha{j},Code)) %在morse编码字典中找到
found=1;
break;
end
end
if found==0 %morse编码字典中没有找到,有误
Dst=[Dst,'*'];
warning(['Input Code frag "',Code,'" wrong']);
else
Dst=[Dst,SrcAlpha(j)]; %相应的原文
end
end
end
Dst=strrep(Dst,' ',' '); %多空格合为一个空格
end
wirelessnetwo
2010-10-31
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
这个题目应该到论坛有偿悬赏 不是随手就可以做的哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式