下面这段代码是由5个自定义函数组成
第一个自定义函数是为了获取用户的输入,也就是01序列
第二个自定义函数绘制出用户输入的01序列图
第三个和第四个和第五个自定义函数分别求该序列的AMI编码,双相编码和CMI编码
采用的编译器是2014a
function return1=Untitled7()
return1=0;
sequence = input('请输入由0和1组成序列的长度:');
global array;
array=1:sequence;
for variable_m=1:length(array)array(variable_m)=input('请输入0或1:');if variable_m==length(array)drow_sequence(array);AMI_sequence(array);Manchester_sequence(array);CMI_sequence(array);endif array(variable_m)==1||array(variable_m)==0continue;elsefprintf('请不要输入除0和1之外的字符');array(variable_m)=input(',请输入0或1:');if array(variable_m)~=1&&array(variable_m)~=0fprintf('请不要输入除0和1之外的字符');array(variable_m)=input(',请输入0或1:');endend
end
function return2=drow_sequence(Array)
return2=0;
variable_n=0;
for variable_m=1:length(Array)if Array(variable_m)==1variable_n = variable_n + 1;hold on;axis([0,length(Array),0,10]);variable_x=variable_n-1:1:variable_n;variable_y=variable_x-variable_x+1;plot(variable_x,variable_y,'r','LineWidth',3);text(((variable_n-1)+variable_n)/2,1.3,'1');if variable_m+1<=length(Array)if Array(variable_m+1)==0% 画垂线plot([variable_n;variable_n],[0;1],'r','LineWidth',3);endendelseif Array(variable_m)==0variable_n = variable_n + 1;hold on;axis([0,length(Array),0,10]);variable_x=variable_n-1:1:variable_n;variable_y=variable_x-variable_x;plot(variable_x,variable_y,'r','LineWidth',3);text(((variable_n-1)+variable_n)/2,1.3,'0');if variable_m+1<=length(Array)if Array(variable_m+1)==1% 画垂线plot([variable_n;variable_n],[0;1],'r','LineWidth',3);endendelseif Array(variable_m)==113else% 非法输入2次(不包括2次)以上则引发该异常error('Error:发生了一个预期之外的错误');end
end
hold off;
function return3=AMI_sequence(Array)
return3=0;
fprintf('\n当第一个传输码为正极性时\n');
variable_t=1;
for variable_m=1:length(Array)if Array(variable_m)==1if mod(variable_t,2)==1Array(variable_m)=1;variable_t = variable_t + 1;elseArray(variable_m)=-1;variable_t = variable_t + 1;endelseif Array(variable_m)==0continue;elseerror('Error:发生了一个预期之外的错误');end
end
fprintf('AMI码:');
for variable_n=1:length(Array)fprintf('%d ',Array(variable_n));
end
function return4=Manchester_sequence(Array)
return4=0;
fprintf('\n');
fprintf('双相码:');
for variable_m=1:length(Array)if Array(variable_m)==1Array(variable_m)=10;fprintf('%d ',Array(variable_m));elseif Array(variable_m)==0fprintf('01 ');elseerror('Error:发生了一个预期之外的错误');end
end
function return5=CMI_sequence(Array)
return5=0;
fprintf('\n');
fprintf('CMI码:');
variable_t=1;
for variable_m=1:length(Array)if Array(variable_m)==0fprintf('01 ');elseif Array(variable_m)==1if mod(variable_t,2)==1fprintf('11 ');variable_t = variable_t + 1;elseif mod(variable_t,2)==0fprintf('00 ');variable_t = variable_t + 1;elseerror('Error;发生了一个预期之外的错误');endend
end