求助:如何用LABVIEW生成M序列信号

seq_byte(i)=seq_byte(i)2;

之前不懂系统辨识的理论,输入信号随便用了一个阶跃信号,后来发现阶跃信号其实很菜,不足以激励起系统的全部动态特性,额,实验数据立马弱爆了。。。M序列是工程中常用的输入信号,它的性质类似于白噪声,而白噪声是理论上的输入信号,可见M序列的价值。下面介绍M序列的matlab产生方法,看到很多产生M序列的程序复用性不高,而matlab就提供了产生M序列的专门函数,这里尝试一下。

m序列产生原理_m序列产生原理图qum序列产生原理_m序列产生原理图qu


m序列产生原理_m序列产生原理图qu


idinput函数

产生系统辨识常用的典型信号。

格式

u = idinput(N,type,band,lls)

[u,freqs] = idinput(N,'sine',band,lls,sinedata)

Type

‘rgs’

高斯随机信号

‘rbs’ (默认)

二值随机信号

‘prbs’

二值伪随机信号(M序列)

‘sine’

正弦信号和

Band

指定信号的频率成分。对于’rgs’、’rbs’、’sine’,band = [wlow, whigh]指定通带的范围,如果是白噪声信号,则band=[0, 1],这也是默认值。指定非默认值时,相当于有色噪声。

对于’prbs’,band=[0, B],B表示信号在一个间隔1/B(时钟周期)内为恒值,默认为[0, 1]。

指定输入的水平。Lls=[minu, maxu],在type=’rbs’、’prbs’、’sine’时,表示信号u的值总是在minu和maxu之间。对于type=’rgs’,minu指定信号的均值减标准,maxu指定信号的均值加标准,对于0均值、标准为1的高斯白噪声信号,则lls=[-1, 1],这也是默认值。

说明

对于PRBS信号,如果M>1,则序列的长度和PRBS周期会做调整,使PRBS的周期为对应一定阶数的值(即2^n-1,n为阶数);如果M=1,PRBS的周期是大于N的相应阶数的值。在多输入的情形时,信号被平移,即P/nu为此信号能被估计的模型阶次的上界。

上面的意思可如下理解:对于M=1时,

ms = idinput(12, 'prbs', [0 1]奈奎斯特准则:抽样值无失真, [0 1]);

stairs(ms)

title('M序列')

ylim([-0.5 1.5])

结果如下

同时,matlab给出如下

Warning: The PRBS signal delivered is the 12 first values of a full sequence of length 15.

即函数的输出为周期为15(大于12的个2^n-1的值)PRBS信号的前12个值组成的序列。如

ms = idinput(15, 'prbs', [0 1], [0 1]);

stairs(ms)

title('M序列')

ylim([-0.5 1.5])

可以看到指定12时的序列为指定15时的序列的前面部分。

对于M>1时,

ms = idinput([12,1,2], 'prbs', [0 1], [0 1]);

stairs(ms)

title('M序列')

ylim([-0.5 1.5])

结果如下

Matlab给出的响应为

Warning: The period of the PRBS signal was changed to 7. Accordingly, the length of the

对于正弦信号和的产生,貌似用的不多,语法还挺复杂,等用的时候再看吧。

方法

产生’rgs’信号的带通信号使用的是一个8阶巴特沃斯滤波器,使用idfilt做的非因果滤波,这个是可信赖的方法。

对于’rbs’信号,使用的是相同的滤波器,但是是在二值化之前,这意味着频率成分并不保证是的。

产生高斯随机信号

clear all

close all

% 高斯随机信号

u = idinput(1000, 'rgs');

stairs(u)

hist(u, -4:4)

title('高斯随机信号的分布')

产生二值随机信号

clear all

close all

% 二值随机信号

u = idinput(100, 'rbs');

stairs(u)

title('二值随机信号')

ylim([-1.5 1.5])

产生二值伪随机信号(M序列)

合理的选择输入激励信号,能有效的激励起系统的动态信号。白噪声的平稳谱的性质决定了它是一个很好的输入信号,但它在工程中不易实现,而M序列具有近似白噪声的性质,可保证良好的辨识精度。

clear all

close all

% 二值伪随机信号(M序列)

n = 8; % 阶次

p = 2^n -1; % 循环周期

ms = idinput(p, 'prbs');

stairs(ms)

title('M序列')

ylim([-1.5 1.5])

结果

-1和1的个数1

sum(ms==1) % 1的个数

sum(ms==-1) % -1的个数

ans =

127

ans =

128

存在直流分量

mean(ms) % 直流分量

ans =

-0.0039

相关函数

a = zeros(length(ms)10, 1); % 采样

for i = 1:10

a(i:10:end) = ms;

end

c = xcorr(a, 'coeff'); % 自相关函数

title('相关函数')

自相关函数接近于δ函数。

pwelch(a) % 谱密度

说明M序列不含基频的整数倍的频率成分。

产生逆M序列

谱分析表明,M序列含有直流成分,将造成对辨识系统的“净扰动”,这通常不是所希望的。而逆M序列将克服这一缺点,是一种比M序列更为理想的伪随机码序列。

clear all

close all

% 二值伪随机信号(M序列)

n = 8; % 阶次

p = 2^n -1; % 循环周期

ms = idinput(p, 'prbs', [], [0 1]);

stairs(ms)

title('M序列')

ylim([-0.5 1.5])

% 产生逆M序列

s = 0;

ims = zeros(2p, 1);

mstemp = [ms; ms];

for i = 1:2p

ims(i) = xor(mstemp(i), s);

s = not(s);

end

ims(ims==0) = -1;

stairs(ims)

title('逆M序列')

ylim([-1.5 1.5])

-1和1的个数1

sum(ims==1) % 1的个数

sum(ims==-1) % -1的个数

ans =

255

ans =

255

无直流分量

mean(ims) % 直流分量

ans =

相关函数

a = zeros(length(ims)10, 1); % 采样

for i = 1:10

a(i:10:end) = ims;

end

c = xcorr(a, 'coeff');

pwelch(a)

什么叫伪随机二进制序列

偏移四相相移键控(OQPSK)

5、伪随机序列扰码

进行基带信号传输的缺点是其频谱会因数据出现连“1”和连“0”而包含大的低频成分,不适应信道的传输特性,也不利于从中提取出时钟信息。解决办法之一是采用扰码技术,使信号受到随机化处理,变为伪随机序列,又称为“数据随机化”和“能量扩散”处理。扰码不但能改善位定时的恢复质量,还可以使信号频谱平滑,使帧同步和自适应同步和自适应时域均衡等系统的性能得到改善。

扰码虽然“扰乱”了原有数据的本来规律,但因为是人为的“扰乱”,在接收端很容易去加扰,恢复成原数据流。

实现加扰和解码,需要产生伪随机二进制序列(PRBS)再与输入数据逐个比特作运算。PRBS也称为m序列,这种m序列与TS的数据码流进行模2加运算后,数据流中的“1”和“0”的连续游程都很短,且出figure现的概率基本相同。

利用伪随机序列进行扰码也是实现数字信号高保密性传输的重要手段之一。一般将信源产生的二进制数字信息和一个周期很长的伪随即序列模2相加,就可将原信息变成不可理解的另一序列。这种信号在信道中传输自然具有高度保密性。在接收端将接收信号再加上(模2和)同样的伪随机序列,就恢复为原来发送的信息。

在DVB-C系统中的CA系统原理就源于此,只不过为了加强系统的保密性,其伪随机序列是不断变化的(10秒变一次),这个伪随机序列又叫控制字(CW)。

伪随机二进制序列

英文缩写为PRBS,全称为Pseudo-Random Binary Sequence。

如果一个序列,一方面它是可以预先确定的,并且是可以重复地生产和的;一方面它又具有某种随机序列的随机特性(即统计特性),我们便称这种序列为伪随机序列。

m序列优选对的意义

clc

m序列优选对的意义:它能用来确定输出信号有在现有的DS/CDMA 系统中,远近效应是一个很大的问题。由于大功率信号只在某个频率上产生远近效应,当载波频率跳变到另一个频率时则不受影响,因此跳频系统没有明显的远近效应,这使得它在移动通信中易于得到应用和发展。在数字蜂窝移动通信系统中,如果链路间采用相互正交的跳频图案同步跳频,或者采用低互相关的跳频图案异步跳频,可以使得链路间的干扰完全消除或基本消除,对提高系统的容量具有重要意义。此外,跳频是瞬时窄带系统,其频率分配具有很大的灵活性,在现有频率资源十分拥挤的条件下,这一点具有重要意义。多大程度来自输入信号,对修正测量中接入噪声源而产生的误非常有效。

设已经得到了a1,a2N=length(a1);gold=zeros(N,N);fori=1:Ntemp=a1+[a2(i:end)a2(1:i-1)];gold(i,:)=mod(temp,2);end。

事实上,在图象处理中,自相关和互相关函数的定义如下:设原函数是f(t),则自相关函数定义为R(u)=f(t)f(-t),其中表示卷积;设两个函数分别是f(t)和g(t),则互相关函数定义为R(u)=f(t)g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。

m序列特性

均衡特性(平衡性)m序列每一周期中 1 的个数比 0 的个数多 1 个。

游程特性(游程分布的随机性)M序列中,状态“0”或“1”连续出现的段称为游程。游程中“0”或“1”的个数称为游程长度。m序列的一个周期(p=2^n-1)中,游程总数为 2^n-1,“0”、“1”各占一半。

移位可加性2个彼此移位等价的相异M序列,按模2相加所得的序列仍为M序列,并与原M序列等价。

以上内容参考:

如何让用MATLAB Simulink产生m序列和Gold序列

考卷需用计算器

本人帮你做m序列的产生吧

1 选5个移位寄存器 其实我也不知道这名字正不正确,反正就是Z分之1那个 按顺序排列好,其中第二个初始条件(initial conditions)设置为0,其他的默认为1.

2 先把这5个移位寄存器链接起来 个输出连第二个输入,以此类推到第五个接OUT,out这里再接一个scope以便观察信号波形

3 选一个logical operator,并从设置中调成XOR,4输generated signal will be 14.入端

4 继续连线,XOR的输出端接个移位寄存器的输入端;然后把XOR输入端引到第二个移位寄存器和第三个移位寄存器的连线上,此时XOR还有3个输入端,分别像刚刚那样分别引到第三和第四,第四和第五,第五和out的线上

5 点击运行 scope中显示的便是m序列,看吧 周期是31,1的个数比0多一个,而且没有重复波形!

跳频通信的原理 技术是什么??

与定频通信相比,跳频通信比较隐蔽也难以被截获。只要对方不清楚载频跳变的规律,就很难截获我方的通信内容。同时,跳频通信也具有良好的抗干扰能力,即使有部分频点扰,仍能在其他未扰的频点上进行正常的通信。由于跳频通信系统是瞬时窄带系统,它易于与其他的窄带通信系统兼容,也就是说,跳频电台可以与常规的窄带电台互通,有利于设备的更新。

通信收发双方的跳频图案是事先约好的,同步地按照跳频图案进行跳变。这种跳频方式称为常规跳频(Normal FH)。随着现代中的电子对抗越演越烈,在常规跳频的基础上又提出了自适应跳频。它增加了频率自适应控制和功率自适应控制两方面。在跳频通信中,跳频图案反映了通信双方的信号载波频率的规律,保证了通信方发送频率有规律可循,但又不易被对方所发现。常用的跳频码序列是基于m 序列、M序列、RS码等设计的伪随机序列。这些伪随机码序列通过移位寄存器加反馈结构来实现,结构简单,性能稳定,能够较快实现同步。它们可以实现较长的周期,汉明相关特性也比较好,但是当存在人为的故意干扰(如预测码序列后进行的跟踪干扰)时,这些序列的抗干扰能力较。

在90 年代初,出现了基于模糊(Fuzzy)规则的跳频图案产生器。在这种系统中,由模糊规则、初始条件以及采样模式共同来决定系统的输出序列。只要者不知道模糊规则、初始条件、采样模式三者的任何一个,就无法预测到系统的输出频率,由此就提高了系统的抗能力和抗干扰能力。模糊跳频给出的跳频码序列与传统的跳频码序列相比更加均匀,也更难预测。

90年代末有人提出了混沌(chaotic)跳频序列。其基本思想是通过混沌系统的符号序列来生成跳频序列。在这个混沌系统中要确定一个非线性的映射关系、初始条件和混沌规则,三者确定一个输出序列。由此确定的混沌跳频序列体现了良好的均匀性,低截获概率,良好的汉明相关特性以及具有理想的线性范围。

与一般的数字通信系统一样,跳频系统要求实现载波同步、位同步、帧同步。此外,由于跳频系统的载频按伪随机序列变化,为了实现电台间的正常通信,收发信机必须在同一时间跳变到同一频率,因此跳频系统还要求实现跳频图案同步。跳频系统对同步有两个基本要求:一是同步速度快,二是同步能力强。目前跳频电台的同步方法有时钟法、同步字头法、自同步法、FFT捕获法、自回归谱估计法等等。在实际应用中,同步方案常常综合使用多种同步方法。例如战术跳频系统中常用扫描驻留同步法,综合使用了时钟法、同步字头法、自同步法三种同步方法,分成扫描和驻留两个阶段进行。扫描阶段完成同步头频率的捕获,驻留阶段从同步头中提取同步信息,从而完成收发双方的同步。

在自适应跳频中,同步还包括收发双方频率集更新的同步,保证双方同步地实现坏频点替代,否则会使收发双方频率表不一致,导致通信失败。频合器是跳频通信系统中的关键部分,目前大多数跳频电台中使用的频率合成器采用的是锁相环(PLL)频率,但是该技术的频率转换速度已经接近其极限,要进一步改善的技术难度越来越大,而且分辨率较低。为了能够进一步提高跳频速率,提出了直接式数字频合器(DDS)。它采用全数字技术,具有频率分辨率高,频率转换时间快,输出频率可以很高而且稳定性好,相位噪声低等优点,可满足快速跳频电台对频率合成器的要求。例如在美国的JTIDS 中,跳速达到每秒35800 跳,只有采用直接数字频合器才能实现。但是DDS的价格昂贵,复杂度大,直接用于战术跳频电台有一定的难度。如果采用DDS+PLL的方法,结合两者的长处,可以获得单一技术难以达到的效果。在跳频系统中,即使在信道条件良好的情况下,仍有可能在少数跳中出现错误,因此有必要进行错控制。错控制的方法主要分为两类:一是自动请求重发纠错(ARQ)技术;二是采用前向纠错(FEC)技术。ARQ技术可以很好的对付随机错误和突发错误,它要求有反馈电路,当信道条件不好时,需要频繁的重发,最终可能导致通信失败。FEC技术不需要反馈电路,但是需要大量的信号冗余度以实现优良的纠错,从而会降低信道效率。由于纠错码对突发错误的纠错能力较,而通过交织技术可以使信道中的错误随机化,因此,经常采用编码与交织技术相结合的办法来获得良好的纠错性能。在跳频系统中常用的纠错编码技术有汉明码、BCH码、trellis 码、RS码、Golay码、卷积码和硬判决译码、软判决译码等。1993年提出了TURBO码,其信噪比接近于Shannon极限,引起了人们的极大兴趣。与RS码等常用的跳频编码相比, TURBO 码在跳频系统中显示了极大的应用潜能。此外,还可以把不同的编码方法结合在一起,取长补短,进行联合编码。在快跳频方式下,还可以运用重发大数判决来克服跳频频段内的快衰落。

跳频电台在实际应用中通常要组成跳频通信网,以实现网中的任何两个通信终端均能够做到点到点的正常通信。组网除了要避免近端对远端的干扰跳频通信网可以分为同步通信网和异步通信网。跳频通信网有多种组网方式,如分频段跳频组网方式、全频段正交跳频组网方式等。在分频段跳频组网方式中,系统把整个频段分成若干个子频段,不同的通信链路采用不同的子频段进行通信,从而有效地防止同一通信网间的干扰。全频段正交跳频组网方式仅用于同步跳频通信网中,也就是说整个通信网中只有一个基准时钟,通过设计在某一相同时刻t 的N 个相互正交的跳频频率序列来进行组网,这样尽管各个终端间的通信均使用相同频段,但是由于瞬时的跳频频率点不相同,因此可保证它们之间不会出现同频道干扰。自适应跳频通信系统中,由于在通信过程中会去除那些通信条件恶劣的信道,因此频率更新后可能会出现同频道干扰现象,故必须设计一种良好的频点更新算法,保证更新后的跳频序列之间依然是正交的,否则可能会使各通信之间频繁出现频率碰撞,导致无常通信。实际应用中也可以把以上两种组网方式结合进行。例如英国Recal-Tacticom 公司的Jaguar 系列电台在组网中就同时采用了这两种组网方式,可组网数目达到200—300 个。、码间干扰、电磁干扰等其它干扰以及由系统引起的热噪声等噪声干扰以外,还要注意避免由组网引起的同道干扰、邻道干扰、互调干扰、阻塞干扰等。采用跳频的多址通信网具有很多优点:抗干扰能力强,低截获概率,低检测概率,对频率选择性衰落有很好的抑制作用等等。但是,与常用的DS/CDMA系统相比,跳频网的用户数相对较小。

除了以上这些关键技术以外,调制解调方法在跳频系统中也很重要,可以采用FSK、QAM、QPSK、QASK、DPSK、QPR、数字chirp 调制等多种调制方式。自适应跳频系统是在常规跳频系统的基础上,实时地去除固定或半固定干扰,从而自适应地自动选择优良信道集,进行跳频通信,使通信系统保持良好的通信状态。也就是说,它除了要实现常规跳频系统的功能之外,还要实现实时的自适应频率控制和自适应功率控制功能,因此就需要一个反向信道以传输频率控制和功率控制信息。

信道质量评估的另一个作用是进行自适应功率控制。功率控制就是要把有限的发送功率地分配给各个跳频信道,使得各个信道都能够以最小发射机功率实现正常通信,从而提高跳频信号的隐蔽性和抗截获能力。在自适应跳频系统中,系统检测每个信道的通信状况,并通过信道质量评估单元中的功率控制算法对每个跳频信道单独进行功率控制。

功率控制算法可以基于两种原则:一是比特误码率最小原则,算法为各个跳频信道选择适当seq_byte(i)=seq_byte(i)+1;的功率,使得接收方收到的数据比特误码率达到预定的误码门限;二是等信干比原则,此算法调整各个跳频信道的平均功率,使得各个跳频信道上的信干比相同,这里的信干比是指各个跳频信道上的信号功率/(对应信道上的干扰功率 + 传输损耗功率)。这两种算法的性能不多。

随着跳频技术的不断发展,其应用也越来越广泛。战术电台中采用跳频技术的主要目的是提高通信的抗干扰能力。早在70 年代,就开始了对跳频系统的研究,现已开发了跳频在VHF 波段(30—300MHz)的低端30—88MHz、UHF波段(300MHz 以上)以及HF 波段(1.5—30MHz)的应用。随着研究的不断深入,跳频速率和数据数率也越来越高,现在美国Sanders 公司的CHESS 高速短波跳频电台已经实现了5000跳/秒的跳频速率,数据数率可达到19200bps。此外,CHESS跳频电台与一般的跳频电台还有所不同,它以DSP 为基础,采用了动跳频(DFH)技术。通过现代数字处理技术,CHESS跳频电台较好解决了短波系统带宽有限(导致数据速率低的原因)、信号间相互干扰、存在多径衰落等的问题。同时,它的瞬时信号带宽很窄,对其它信号的影响很小。可以看到,实现更高跳速、更高数据速率的跳频电台正是跳频通信系统的未来发展方向,软件电的概念也已逐渐应用到新型的跳频电台中。短波自适应跳频电台已经在当前的军事通信中占有了很重要的一部分。与VHF/UHF频段不同,短波信道有许多固有特点,例如,受多径时延、幅度衰落、天气变化等因素的影响,信道条件变化莫测。但是随着各种新技术的出现,短波通信的可靠性得到了技术上的保证,而自适应跳频技术就是这些新技术中的一种。它通过分析波段上的频率占用率,自动搜索无干扰或未被占用的跳频信道进行跳频,不仅避免了自然干扰,也不会受到短波频谱大量占用的影响。它会根据需要自动地改变跳频序列,有效的适应恶劣环境。它在海湾中体现出的优越性引起了各国的高度重视。

跳频的多址性能对于组网有很重要的意义。加拿大Lal 大学提出了在光纤网络中应用快跳频技术。该系统利用Bragg 光栅替代传统跳频系统中的频率合成器,跳速达到10G数量级。系统在30个用户,比特误码率为10-9的条件下,数据速率为500Mb/s。与采用非相干DS/CDMA 技术的光纤网络相比,同时有相同数量的用户使用时,FFH/CDMA系统的比特误码率明显优于DS/CDMA 系统。

此外,跳频技术在GSM、局域网、室内通信、卫星通信、水下通信、雷达、微波等多个领域也得到了广泛的应用。

由于跳频系统本身也存在着一些缺点和局限,如信号隐蔽性,抗多频干扰以及跟踪式干扰能力有限等,而扩频的另一种方式直接序列扩频却有较好的隐蔽性和抗多频干扰的能力。把这两种扩频技术结合起来,就构成了直接序列/跳频扩展频谱技术。它在直接序列扩展频谱系统的基础上增加载波频率跳变的功能,直扩系统所用的伪随机序列和跳频系统用的伪随机跳频图案由同一个伪随机码发生器生成,所以它们在时间上是相互关联的,使用同一个时钟进行时序控制。意大利Telettra 公司的Hydra V 电台是采用了直接序列/跳频混合扩频技术的代战术电台。由于采用了直接序列扩频DBPSK 调制方式,比单独采用跳频技术多获得9dB 的处理增益,从而提高了电台的抗干扰性能。

matlab能够产生二进制伪随机序列吗?(m序列)

谱密度

当然可以,M序列产生方法较为简单,可以自己编写程序,按照生成表达式进行移位异或作;也可以使用MatLab自带的函数或者Simulink中的模型,seqgen/commsrc等;如果要送到硬件中去的话,普通的PC只有音频输出口可用,而且是模拟的;根据你的需求选用合适的硬件,比如数字IO卡、FPGA开发板等;

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

产生m序列的matlab程序

(六)数字信号载波传输

function [m]=mxu(cn)

N产生的序列的长度,如果N=[N nu],则nu为输入的通道数,如果N=[P nu M],则nu指定通道数,P为周期,MP为信号长度。默认情况下,nu=1,M=1,即一个通道,一个周期。

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的数量'};%标题

percent=round(bili100000000000000000)/100;%计算百分比

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

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

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

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

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

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=2m-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]);%设置横纵坐标范围

如何让用MATLAB Simulink产生m序列和Gold序列

通过可靠的信道质量评估算法,发现了干扰频点后,应当在收发双方的频率表中将其删除,并以好的频点对它们进行替换,以维持频率表的固定大小。这种检测和替换是实时进行的。为增加跳频信号的隐蔽性和抗破译能力,跳频图案除具有很好的伪随机性、长周期外,各频率出现次数在长时间内应具有很好的均匀性。在引入自适应频率替换算法对频率表进行实时更新后,为保障系统性能,仍然要求跳频图案具有很好的均匀性,所以应当依次用不同的质量较好的频点来分别替换扰的频点。收端频率表的更新会导致收发频率表的不一致性。为了使收发频率表同步更新,必须通过反馈信道将收端的频率更新信息通知发方。这种信息的相互交换是一种闭环控制过程,需要制定相应的信息交换协议来保证频表可靠的同步更新。衡量协议有效性的另一个重要指标便是频点去除的速度。在检测出干扰频点后,干扰频点去除的速度越快,对通信的影响越小。

本人帮你做m序列的产生吧

1 选5个移位寄存器 其实我也不知道这名字正不正确,反正就是Z分之1那个 按顺序排列好,其中第二个初始条件(initial conditions)设置为0,其他的默认为1.

2 先把这5个移位寄存器链接起来 个输出连第二个输入,以此类推到第五个接OUT,out这里再接一个scope以便观察信号波形

3 选一个logical operator,并从设置中调成XOR,4输入端

4 继续连线,XOR的输出端接个移位寄存器的输入端;然后把XOR输入端引到第二个移位寄存器和第三个移位寄存器的连线上,此时XOR还有3个输入端,分别像刚刚那样分别引到第三和第四,第四和第五,第五和out的线上

5 点击运行 scope中显示的便是如果伪随机序列中可取的值只有0或1,则此伪随机序列为伪随机二进制序列。m序列,看吧 周期是31,1的个数比0多一个,而且没有重复波形!

求助:如何用LABVIEW生成M序列信号

for i=1:length(name)

之前不懂系统辨识的理论,输入信号随便用了一个阶跃信号,后来发现阶跃信号其实很菜,不足以激励起系统的全部动态特性,额,实验数据立马弱爆了。。。M序列是工程中常用的输入信号,它的性质类似于白噪声,而白噪声是理论上的输入信号,可见M序列的价值。下面介绍M序列的matlab产生方法,看到很多产生M序列的程序复用性不高,而matlab就提供了产生M序列的专门函数,这里尝试一下。

idinput函数

产生系统辨识常用的典型信号。

格式

u = idinput(N,type,band,lls)

[u,freqs] = idinput(N,'sine',band,lls,sinedata)

Type

‘rgs’

高斯随机信号

‘rbs’ (默认)

二值随机信号

‘prbs’

二值伪随机信号(M序列)

‘sine’

正弦信号和

Band

指定信号的频率成分。对于’rgs’、’rbs’、’sine’,band = [wlow, whigh]指定通带的范围,如果是白噪声信号,则band=[0, 1],这也是默认值。指定非默认值时,相当于有色噪声。

对于’prbs’,band=[0, B],B表示信号在一个间隔1/B(时钟周期)内为恒值,默认为[0, 1]。

指定输入的水平。Lls=[minu, maxu],在type=’rbs’、’prbs’、’sine’时,表示信号u的值总是在minu和maxu之间。对于type=’rgs’,minu指定信号的均值减标准,maxu指定信号的均值加标准,对于0均值、标准为1的高斯白噪声信号,则lls=[-1, 1],这也是默认值。

说明

对于PRBS信号,如果M>1,则序列的长度和PRBS周期会做调整,使PRBS的周期为对应一定阶数的值(即2^n-1,n为阶数);如果M=1,PRBS的周期是大于N的相应阶数的值。在多输入的情形时,信号被平移,即P/nu为此信号能被估计的模型阶次的上界。

上面的意思可如下理解:对于M=1时,

ms = idinput(12, 'prbs', [0 1], [0 1]);

stairs(ms)

title('M序列')

ylim([-0.5 1.5])

结果如下

同时,matlab给出如下

Warning: The PRBS signal delivered is the 12 first values of a full sequence of length 15.

即函数的输出为周期为15(大于12的个2^n-1的值)PRBS信号的前12个值组成的序列。如

ms = idinput(15, 'prbs', [0 1], [0 1]);

stairs(ms)

title('M序列')

ylim([-0.5 1.5])

可以看到指定12时的序列为指定15时的序列的前面部分。

对于M>1时,

ms = idinput([12,1,2], 'prbs', [0 1], [0 1]);

stairs(ms)

title('M序列')

ylim([-0.5 1.5])

结果如下

Matlab给出的响应为

Warning: The period of the PRBS signal was changed to 7. Accordingly, the length of the

对于正弦信号和的产生,貌似用的不多,语法还挺复杂,等用的时候再看吧。

方法

产生’rgs’信号的带通信号使用的是一个8阶巴特沃斯滤波器,使用idfilt做的非因果滤波,这个是可信赖的方法。

对于’rbs’信号,使用的是相同的滤波器,但是是在二值化之前,这意味着频率成分并不保证是的。

产生高斯随机信号

clear all

closebili=num/L; all

% 高斯随机信号

u = idinput(1000, 'rgs');

stairs(u)

hist(u, -4:4)

title('高斯随机信号的分布')

产生二值随机信号

clear all

close all

% 二值随机信号

u = idinput(100, 'rbs');

stairs(u)

title('二值随机信号')

ylim([-1.5 1.5])

产生二值伪随机信号(M序列)

合理的选择输入激励信号,能有效的激励起系统的动态信号。白噪声的平稳谱的性质决定了它是一个很好的输入信号,但它在工程中不易实现,而M序列具有近似白噪声的性质,可保证良好的辨识精度。

clear all

close all

% 二值伪随机信号(M序列)

n = 8; % 阶次

p = 2^n -1; % 循环周期

ms = idinput(p, 'prbs');

stairs(ms)

title('M序列')

ylim([-1.5 1.5])

结果

-1和1的个数1

sum(ms==1) % 1的个数

sum(ms==-1) % -1的个数

ans =

127

ans =

128

存在直流分量

mean(ms) % 直流分量

ans =

-0.0039

相关函数

a = zeros(length(ms)10, 1); % 采样

for i = 1:10

a(i:10:end) = ms;

end

c = xcorr(a, 'coeff'); % 自相关函数

title('相关函数')

自相关函数接近于δ函数。

pwelch(a) % 谱密度

说明M序列不含基频的整数倍的频率成分。

产生逆M序列

谱分析表明,M序列含有直流成分,将造成对辨识系统的“净扰动”,这通常不是所希望的。而逆M序列将克服这一缺点,是一种比M序列更为理想的伪随机码序列。

clear all

close all

% 二值伪随机信号(M序列)

n = 8; % 阶次

p = 2^n -1; % 循环周期

ms = idinput(p, 'prbs', [], [0 1]);

stairs(ms)

title('M序列')

ylim([-0.5 1.5])

% 产生逆M序列

s = 0;

ims = zeros(2p, 1);

mstemp = [ms; ms];

for i = 1:2p

ims(i) = xor(mstemp(i), s);

s = not(s);

end

ims(ims==0) = -1;

stairs(ims)

title('逆M序列')

ylim([-1.5 1.5])

-1和1的个数1

sum(ims==1) % 1的个数

sum(ims==-1) % -1的个数

ans =

255

ans =

255

无直流分量

mean(ims) % 直流分量

ans =

相关函数

a = zeros(length(ims)10, 1); % 采样

for i = 1:10

a(i:10:end) = ims;

end

c = xcorr(a, 'coeff');

pwelch(a)

急救 用verilog HDL语言设计一个m序列的生成程序,您之前有有解决过相关问题。

指定产生信号的类型,可选类型如下

我m序列代码赋值下来是,发现wire和x中间没有空格,这可能是导致你没有输出的原因,个人建议你的代码这样写:

module prbs(clk,rst,m_out);

input clk,rst;

output m_out;

reg[7:0] reg_buf;

reg x;

always@(edge clk or edge rst)

if(!rst)

begin

reg_buf[7:0] <= 8'b1000_0000;

x <= 1'b1;

end

elstitle('高斯随机信号')e

begin

reg_buf[7:0] <= {reg_buf[6:0],x};

x <= reg_buf[7]^reg_buf[3]^reg_buf[2]^reg_buf[1];

end

assign m_out = reg_buf[7];

endmodule

用matlab得到了m序列,怎么绘制这个m序列的波形呢?

plot(c)

m序列是最长线性反馈移位寄存器序列的简称。它是由带线性反馈的移存器产生的周期最长的序列。

序列的产生

从上图可以看出,先设置初始状态,之后根据框图的原型来进行移位,进行mod2运算。这样移位15次后又回到初始状态(1,0,0,0)。所以除了全零状态,一共可以用15种。

一般来说,一个n级线性反馈移存器可能产生的最长周期等于2^n-1

接下来是matlab代码

close all; cl验证M序列的性质如下ear all; clc;

fb=200000;

upsample_NUM=20; %每个符号的采样点数目

BIT_NUM=520;

load RC_LPF.mat;

close all为关闭所有窗口,clear all为清除所有变量,clc清除命令

这里加载了一个LPF文件。

下面的公式可以作为依据直接产生m序列:

image.png

%产生m序列

%m序列本原多项式:x^3+x+1, x^4+x+1, x^5+x^2+1,x^6+x+1, x^7+x^3+1

% g3=[0 1 1];

% g4=[0 0 1 1];

% g5=[0 0 1 0 1];

% g6=[0 0 0 0 1 1];

% g7=[0 0 0 1 0 0 1];

g8=[0 0 0 1 1 1 0 1];

这里的要求是2的8次方的m序列,所以m的本原多项式可以得出。g8为特征多项式表示的数组模式,就相当于反馈系数cof,注意一开头的都是0;

%下面产生m=8的序列

m=length(g8);

N=2^m-1;

register=[zeros(1,m-1) 1]; %移位寄存器的初始状态

new_register=zeros(1,m);

m_seq_out8=zeros(1,N+1);

m_seq_out8(1)=register(m);

for i=2:N

new_register(1)=mod(sum(g8.register),2); %移存器与反馈系数进行模2加,更新移存器第1个数

for j=2:m

new_register(j)=register(j-1); %更新移存器其他数

end

register=new_register;

m_seq_out8(i)=register(m); %输出

end

m_seq_out9=2m_seq_out8-1; %双极性变换

seq_byte=zeros(1,32); %32字节,每个字节8bit,m序列被存放在该32字节中

产生m=8的序列,当然N=2^m-1,这是最长周期,设置移位寄存器的初始状态,m-1列的0,是1,应该是[00000001],即a7为1,其他为0.。

接下来的循环语句就是更新移存器,定义了新的变量new_register保存新的数据,返还给register。m序列数据都被存在32个字节中。

for i=1:32

for j=1:8

if m_seq_out8((i-1)8+j)==1

end

end

end

data1=zeros(1,20length(m_seq_out9)); %将采样率扩展20倍,每个bit对应20个样值

for i=1:length(m_seq_out9)

for j=1:20

data1(20(i-1)+j)=m_seq_out9(i);

end

end

data2=[data1,data1,data1,data1];

data3=convn(data2,LPF1); %LPF1为低通滤波器,对应抽样率为(20200KSPS=4 MSPS)

i=1:length(data3);

figure;

plot(i,data3);

接下来的语法嵌套for循环,将data和LPF进行卷积,也就是说在频域进行相乘,这时候会出现“吉布斯”效应,就是低通滤波器产生的峰值谷值会比一跌个8.5%左右,所以产生了这样的波形。