产生m序列的matlab程序

产生m序列的matlab程序,第1张

function [m]=mxu(cn)

cn=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1]%cn为移位寄存器,从左向右由小到大

an=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] %初始寄存器内容

len=length(an)%所需的移位寄存器的长度

L=2^len-1%m序列的长度

an=[zeros(1,len-1),1]%初始寄存器内容,zeros矩阵函数

m=zeros(1,L)%提速

m(1)=an(1)%m序列的第一个输出码元

for i=2:L

an1(1:len-1)=an(2:len)%移位

an1(len)=mod(sum(cn.*an),2)%寄存器与反馈的模2和

an=an1%移位后的寄存器

m(i)=an(1)%新的寄存器输出

end

one_num=sum(m,2)

zero_num=L-one_num

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%画饼图

num=[one_num zero_num]%输入数据

name={'1的概率','0的概率'}%输入标签

name1={'1的数量','0的数量'}%标题

bili=num/L

percent=round(bili*100000000000000000)/100%计算百分比

percent=num2str(percent')%转化为字符型

percent=cellstr(percent)%转化为字符串数组

biaoti=num2str(num')%转化为字符型

biaoti=cellstr(biaoti)%转化为字符串数组

%在每个标签后加2个空格

for i=1:length(name)

name(i)={[name{i},blanks(2)]}

end

bfh=cellstr(repmat('%',length(num),1))%创建百分号字符串数组

c=strcat(name,percent',bfh')

bt=strcat(name1,biaoti')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%饼图

figure(1)

pie(num,c)

title(bt)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%画波形图

figure(2)

%subplot(3,1,2)

stairs(m)%对m序列绘图

xlabel('n')

ylabel('y')

title('m序列')

%%%%%%%%%%%%%%%%%%%%%%自相关函数由于阶数大所以运行时间久

%求自相关函数

%rho=zeros(1,L)

%bwb=zeros(1,L)

%xg=2*m-1 %变为双极性序列,1对应1,0对应-1

%for j=0:L-1

%bwb=[xg(1+j:L),xg(1:j)]

% rho(j+1)=sum(m.*bwb)

%end

%j=-L+1:L-1%调整自相关图像显示的横坐标范围

%rho=[fliplr(rho(2:L)),rho]

%figure(3)

%plot(j,rho)

%axis([-L L -0.1 1.2])%设置横纵坐标范围

%title('m序列的自相关函数')

axis([min(k1),min(k2)-1,max(max(k1),max(k2))+1,min(f)-0.5,max(f)+0.5])

五个元素,axis对坐标轴中最大最小值的限定,要求 4, 6, or 8 个元素,成对的

有两种方法:

【方法一】:这里用到两个函数:

1.rand()用来产生0-1之间的随机数,

2.fix()求取最小整数

若想产生一个包含m个整数且整数的范围在1-n之间的任意数,可通过以下命令:

1+fix(rand(1,m)*n)来产生

【方法二】:用randint

在matlab中用于产生基质的均匀分布的随机整数。

比如想产生10个元素的随机序列数组,使用语法:

>>

randint(1,10,2)

ans

=

0

0

0

1

1

0

1

0

0

0

更多信息,可以参考帮助文档


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12049633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存