精华内容
下载资源
问答
  • matlab开发-随机单位矢量发生器。广义随机单位向量n=1各向同性
  • matlab开发-三角分布随机变量发生器。该函数生成一个三角形分布连续随机变量的向量。
  • 通信工程专业 计算机课程设计 题 目 基于MATLAB的伪随机序列发生器的设计 学生姓名 学号 所在院(系) 专业班级 指导教师 完成地点 2013年 11 月 12 日 . . . .专业资料. 计算机课程设计任务书 院(系) 专业班级 学生...
  • 基于FPGA的伪随机序列发生器设计1 基本概念与应用1)LFSR:线性反馈移位寄存器(linear feedback shift register, LFSR)是指给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特...

    基于FPGA的伪随机序列发生器设计

    1 基本概念与应用

    1)LFSR:线性反馈移位寄存器(linear feedback shift register, LFSR)是指给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。

    LFSR产生的两种形式为伽罗瓦(Galois)和斐波那契(Fibonacci)两种形式。也有成为外部(External)执行方式和内部(Internal)执行方式。

    (1)伽罗瓦方式(Internal)

    eb64b2666859e3ecc1ea49548872c066.png 

    Galois方式特征数据的方向从左至右,反馈线路是从右至左。其中X^0项(本原多项式里面的1’这一项)作为起始项。按照本原多项式的指示确定异或门(XOR)在移位寄存器电路上的位置。如上图所示X^4。因此Galois方式也有人称作线内或模类型(M-型)LFSR

    (2)斐波那契方式(External)

    4e77ea934170ad11a15fe871cf3ebd9d.png

    从图中我们可以看到Fibonacci方式的数学流向和反馈形式是恰好跟Galois方式相反的,按照本原多项式,其中X^0这一项作为最后一项,这里需要一个XOR门,将本原多项式中所给的taps来设定它的异或方式。因此Fibonacci方式也被叫做线外或者简型(S-型)LFSR

    2)本原多项式

    本原多项式是近世代数中的一个概念,是唯一分解整环上满足所有系数的最大公因数为1的多项式。本原多项式不等于零,与本原多项式相伴的多项式仍为本原多项式

    0c005bf548750b6f0b243ee0d9c6b3d1.png

    (1)在MATLAB中,本原多项式可以通过函数primpoly(x)来产生。

    (2)在MATLAB中,通过函数gfprimfd(m,'min')可以找到一个最小的本原多项式

    3)应用

    误码率测量--在数字通信中误码率是一项重要的质量指标,在实际测量数字通信系统的误码率时,一般来说,测量结果与信源发出信号的统计特性有关。通常认为二进制信号01是以等概率随机出现的。所以测量误码率时最理想的信源应是伪随机序列产生器。这样测量的结果,我们认为是符合实际运用时的情况。

    时延测量--有时我们需要测量信号经过某一传输路径所收到的时间延迟,例如,需要测量某一延迟线的时间延迟。另外,我们还常常通过测量一无线电信号在某个媒质中的传播时间,从而折算传播距离,即利用无线电信号测距。这就是说,这种测距的原理实质上也是测量延迟。

    噪声产生器--测量通信系统的性能时,常常要使用噪声产生器,由它给出具有所要求的统计特性和频率特性的噪声,并且可以随意控制其强度,以便得到不同信噪比条件下的系统性能。例如,在许多情况下,要求它能产生限带白色高斯噪声。

    通信加密、数据序列的加扰与解扰、扩展频谱通信、分离多径技术等等。

    2伪随机序列的原理

    对于某种反馈逻辑、初始化状态非全零时,若输出序列周期最长(P=2r-1),称为m序列,也称为伪随机序列。

    伪随机序列通常由反馈移位寄存器产生,又可分为线性反馈移位寄存器和非线性反馈移位寄存器两类。由线性反馈移位寄存器产生出的周期最长的二进制数字序列称为最大长度线性反馈移位寄存器,即为通常说的m序列,因其理论成熟,实现简单,应用较为广泛。下面介绍m序列的产生原理。

    在二进制多级移位寄存器中,若线性反馈移位寄存器(LFSR)有n 阶(即有n级寄存器),则所能产生的最大长度的码序列为2n-1位。如果数字信号直接取自LFSR(非翻转信号)的输出,那么最长的连0数为n-1。除了字符串的连0和连1,伪随机序列在一个长度为n的字符串中将包含任何可能的01的组合。要使移位寄存器产生确定的值,必须置其初值并允许时钟电路产生移位时钟。

    75db7364f8754f4444cf45c1eed525cc.png

    线性反馈移位寄存器产生m序列

    在图中给出一个一般的线性反馈移位寄存器的组成。图中一级移存器的状态用表示,=01i=整数。反馈线的连接状态用 表示,=1表示此线接通(参加反馈),=0表示此线断开。我们不难推想,反馈线的连接状态不同,就可能改变此移存器输出序列的周期p

    的取值决定了移存器的反馈连接和序列的结构,也就是决定了序列的周期。用特征多项式表示为:

    87a2773197998722b14ba0e3f66534a3.png

    当特征多项式符合某些条件时称为本原多项式。在设计m序列产生器时,移位寄存器反馈线的结构直接决定于本原多项式的结构。也就是只要找到本原多项式,就能由它构成m序列产生器。

    3 matlabLFSR验证

    1)matlab函数产生本原多项式

    clear all

    close all

    primpoly(8);

    a9f20e1b1b8fb2f33d5ccc0b9ce0b9cc.png

    2)本原多项式产生随机序列

    clear all

    close all

    % m=8

    % x^8+x^4+x^3+x^2+1

    % 435

    s=[1 1 1 1 1 1 1 1];

    t=[8 4 3 2];

    [seq c]=LFSRv1(s,t);

    1f98951ecc16633b829013c05f1d329b.png

    4 FPGALSFR验证

    1)fpga实现本原多项式

    /*m:x^8+x^4+x^3+x^2+1*/ module msequence8#(       parameter seed= 8'b1111_1111   )(   clk,   rst_n,   en,   mse8, //m sequence   rand8   );     input clk, rst_n;    input en;    output mse8;    output reg [7:0] rand8;     assign mse8 = rand8[0];     always @ (posedge clk or negedge rst_n)begin       if(!rst_n)          rand8 <= seed;       else if(en) begin          rand8[0] <= rand8[1];          rand8[1] <= rand8[2];          rand8[2] <= rand8[3];          rand8[3] <= rand8[4];          rand8[4] <= rand8[5];          rand8[5] <= rand8[6];          rand8[6] <= rand8[7];          rand8[7] <= rand8[0] ^ rand8[4] ^ rand8[5] ^ rand8[6];       end       else          rand8 <= rand8;    end endmodule

    35a31111adbf9bfa02cd8e0b274fa3be.png

    如上图所示,当fpga仿真的输入种子和matlab的输入种子一致时产生的序列一致。

    635159ffdca5e845764681f5ef97789e.png

    上图为随机序列的模拟信号展示。

    3)在产生随机数序列的基础上我们可以进一步去产生符合高斯分布的高斯白噪声

    9f89533800420ac665a050371d72699e.png

    展开全文
  • matlab随机序列

    2019-10-02 00:48:16
    随机序列发生器有多种,先看一种吧 function [row, col] = randinterval(matrix, count, key) %计算间隔的位数 [m,n] = size(matrix); interval1 = floor(m*n/count)+1; interval2 = interval1 - 2; if ...
        

    伪随机序列发生器有多种,先看一种吧

    function [row, col] = randinterval(matrix, count, key)
        %计算间隔的位数
        [m,n] = size(matrix);
        interval1 = floor(m*n/count)+1;
        interval2 = interval1 - 2;
        if interval2 == 0
            errot('载体太小不能将信息隐藏进去');
        end
        %生成随机序列
        rand('seed', key);
        a = rand(1, count);
        %初始化
        row = zeros([1 count]);
        col = zeros([1 count]);
        %计算row和col
        r = 1;
        c = 1;
        row(1,1) = r;
        col(1,1) = c;
        for i =2:count
            if a(i) >= 0.5
                c = c + interval1;
            else
                c = c+interval2;
            end
            if c>n
                r = r+1;
                if r>m
                    error('载体太小不能将密码信息隐藏进去');
                end
                c = mod(c, n);
                if c==0
                    c = 1;
                end
            end
            row(1,i) = r;
            col(1,i) = c;
        end
    

    基本思想:
    先通过rand('seed', key);设置一个种子,控制随机序列产生

    产生好随机序列a = rand(1, count);之后

    循环遍历随机序列a中的值,如果大于0.5, c = c + interval1;

    小于则c = c+interval2;

    这样控制了列的随机,行随机是显然没有的。。

    具体原理emmm


    10651191-9604061cc37aa2f2.png
    展开全文
  • MATLAB m序列发生器

    2019-06-04 19:36:41
    m序列是伪随机编码信号 此函数用来生成m序列 coef为反馈系数向量
  • MATLAB中,信号处理工具箱可以看做工具集合,包含波形产生与处理、数字和模拟滤波器设计、信号模型以及频谱分析、时频分析等多个常见功能。在MATLAB信号工具箱中,提供了多种产生信号的函数。利用这些函数,可以很...

    信号是现代工程中经常处理的对象,在通信、雷达等领域有大量的应用。在MATLAB中,信号处理工具箱可以看做工具集合,包含波形产生与处理、数字和模拟滤波器设计、信号模型以及频谱分析、时频分析等多个常见功能。

    91bf67cd006b143cf975dae2f2a557fa.png

    在MATLAB信号工具箱中,提供了多种产生信号的函数。利用这些函数,可以很方便地产生多种常见信号。

    锯齿波和三角波

    0f8354dac7bd365d9603a4960ba2a51c.png

    sawtooth(t):产生周期为2π,峰值为-1和1,采样时刻由向量t指定,此时为锯齿波。

    sawtooth(t, xmax):产生三角波,xmax指定最大值出现的地方,其取值在0到1之间。当t由0增大到xmax*2π时,函数值由-1增大到1,当t由xmax*2π增大到2π时,函数值由1减小到-1。当xmax=0.5时,上升段斜率与下降段斜率相等,三角波对称,如下面简单例子。

    T = 5*(1/50);

    Fs = 100e3;

    dt = 1/Fs;

    t = 0:dt:T-dt;

    Xmax = 0.5;

    st = sawtooth(2*pi*50*t,Xmax);

    plot(t,st)

    grid on

    1587f27a401e5b139ea60a7f3319ea69.png

    非周期三角/矩形脉冲

    0f8354dac7bd365d9603a4960ba2a51c.png

    tripuls(t) :产生一个连续的、非周期的、单位高度的三角脉冲的采样,采样时刻由数组t指定。缺省情况下,产生的是宽度为1的非对称三角脉冲。

    tripuls(t,W) :产生一个宽度为W的三角脉冲。

    tripuls(t,W,S) :S为三角波的斜度。参数S满足-11,当S=0时,产生一个对称的三角波。

    rectpuls(t, W) 产生一个连续的、非周期的、单位高度的矩形脉冲的采样,宽度为W。

    t = -T:1/Fs:T-Ts;

    W = 0.04;

    S = 0;

    st_tri = tripuls(t,W,S);

    figure;

    plot(t,st_tri)

    grid on

    t = -T:1/Fs:T-Ts;

    W = 0.04;

    st_rect = rectpuls(t,W);

    figure;

    plot(t,st_rect)

    grid on

    8f6b21422aae25a15996e81cadd16e9b.png

    周期sinc波形

    0f8354dac7bd365d9603a4960ba2a51c.png

    在MATLAB中,用户可以使用diric命令实现周期sinc函数,又被称为Dirichlet 函数。Dirichlet函数的定义是d(x)=sin(N*x/2)./(N*sin(x/2))。diric函数的调用格式为:Y=diric(x,N)。

    函数返回大小与x相同的矩阵,元素为Dirichlet 函数值。N必须为正整数,该函数将0到2π等间隔的分成N等份。

    x=-6*pi:0.01:6*pi;

    y1=abs(diric(x,10));

    y2=diric(x,50);

    figure;

    plot(x,y1,'-k',x,y2,'-r','LineWidth',2)

    grid on

    1ff725d5715e97204e118e7f8cb83ce1.png

    高斯调幅正弦波

    0f8354dac7bd365d9603a4960ba2a51c.png

    在信息处理中,使载波的振幅按调制信号改变的方式叫调幅。高斯调幅正弦波是比较常见的调幅正弦波,通过高斯函数变换将正弦波的幅度进行调整。gauspuls是MATLAB信号处理工具箱提供的信号发生函数,其调用格式如下:

    yi=gauspuls(t,Fc,BW):函数返回最大幅值为1的高斯函数调幅的正弦波的采样,其中心频率为Fc,相对带宽为BW,时间由数组t给定。BW 的值必须大于0。默认情况下,Fc=1000Hz,BW=0.5。

    yi=gauspuls(t,Fc,BW,BWR) BWR:指定可选的频带边缘处的参考水平,以相对于正常信号峰值下降了-BWR(单位为dB)为边界的频带,其相对带宽为100*BW%。默认情况下BWR的值为-6dB。其他参数设置同上。BWR的值为负值。

    tc=gauspuls(‘cutoff’,Fc,BW,BWR,TPE):返回包络相对包络峰值下降TPE(单位为dB)时的时间tc。默认情况下,TPE 的值是-60dB。其他参数设置同上。TPE 的值必须是负值。

    Fc = 5e3;

    BW = 0.6;

    tc = gauspuls('cutoff',Fc,BW,[],-40);

    t = -tc:dt:tc;

    yi = gauspuls(t,Fc,BW);

    figure;

    plot(t,yi)

    grid on

    521c85be3841f7d746cfd124408efba5.png

    调频信号

    0f8354dac7bd365d9603a4960ba2a51c.png

    和调幅类似,使载波的频率按调制信号改变的方式被称为调频。调波后的频率变化由调制信号决定,同时调波的振幅保持不变。从波形上看,调频波像被压缩得不均匀的弹簧。在MATLAB中,chirp 函数可以获得在设定频率范围内的按照设定方式进行的扫频信号。chirp函数调用格式如下。

    Y=chirp(t,F0,T1,F1):产生一个频率随时间线性变化信号的采样,其时间轴的设置由数组t定义。时刻0的瞬时频率为F0;时刻T1的瞬时频率为F1。默认情况下,F0=0Hz,T1=1,F1=100Hz。

    Y=chirp(t,F0,T1,F1,’method’):method指定改变扫频的方法。可用的方法有‘linear’(线性调频)、‘quadratic’(二次调频)、‘logarithmic’(对数调频)。默认时为‘linear’,其他参数意义同上。

    Y=chirp(t,F0,T1,F1,’method’,PHI):PHI 指定信号的初始相位,默认时PHI 的值为0,其他参数意义同上。

    56af4f9d4a60fab2730979c28025aac6.png

    高斯分布随机序列

    0f8354dac7bd365d9603a4960ba2a51c.png

    在信号处理中,标准正态分布随机序列是重要序列。该序列可以由randn函数生成,randn函数的调用格式为:Y=randn(M,N):将生成M 行N 列的均值方差为1的标准正态分布的随机数序列。

    M = 150;

    D = 5;

    Y = M+sqrt(D)*randn(1,10000);

    M1 = mean(Y)

    D1 = var(Y)

    x=140:0.1:160;

    figure;

    hist(Y,x)

    grid on

    d3413d2696390c267836af6fbb0a0f30.png

    需要本文Matlab代码的可给“雷达通信电子战”发送“190611”或者直接点击“阅读原文”。

    展开全文
  • 随机序列发生器PRBS7的matlab实现

    千次阅读 2015-01-08 22:55:18
    本原多项式:X7+X6+1 clc;clear all;close all; %---PRBS 7-----% num=127;%输出序列需要输出的个数 registers=ones(1,7); output=zeros(1,num); % 设置寄存器初始值 % registers(1)=1;...% registers(4

    本原多项式:X7+X6+1

    clc;clear all;close all;
    
    %---PRBS 7-----%
    num=127;%输出序列需要输出的个数
    registers=ones(1,7);
    output=zeros(1,num);
    
    % 设置寄存器初始值
    % registers(1)=1;
    % registers(2)=1;
    % registers(3)=1;
    % registers(4)=1;
    % registers(5)=1;
    % registers(6)=1;
    % registers(7)=1;
    
    
    for i=1:127
        output(i)=registers(7);
        temp=registers(6);
        for j=7:-1:2
            registers(j)=registers(j-1);
        end
        registers(1)=xor(output(i),temp);
    end
    
    fid = fopen('Data.txt','wt');%数据保存在当前的文件夹下,文件名为Data.txt
    fprintf(fid,'%d',output);
    fclose(fid)


    展开全文
  • matlab下的信号发生器

    2013-05-28 22:53:02
    这是matlab下的一个信号发生器,共发生三种信号,同时也加入了随机噪声
  • 随机序列发生器有多种,先看一种吧function [row, col] = randinterval(matrix, count, key)%计算间隔的位数[m,n] = size(matrix);interval1 = floor(m*n/count)+1;interval2 = interval1 - 2;if interval2 == 0...
  • 基于FPGA的伪随机序列发生器设计1 基本概念与应用1)LFSR:线性反馈移位寄存器(linear feedback shift register, LFSR)是指给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特...
  • matlab开发-米塔格流出物数字发生器。生成Mittag-Leffler伪随机数矩阵
  • 单个的随机数发生器在周期性等方面存在缺陷,组合发生器是将两个或者多个独立的随机数发生器以某种方式组合起来,使得新组合的随机数...用第二个线性同余发生器M2生成一个随机整数j,满足1 <= j <= k; 令xn = t
  • matlab开发-空间相关发生器与LatinHiperCube采样和胆石分解。随机场生成。由LHS创建。相关基于Cholesky因子分解。
  • 发生器模型的matlab实现

    热门讨论 2011-09-06 10:44:38
    云模型是在模糊集合理论和概率理论进行交叉渗透的基础上构造的特定算法,即云发生器,进行定性概念和定量表示之间的不确定转换,它揭示随机性和模糊性的内在关联性。在此利用实例解释云模型的应用。
  • 本文档中的代码为matlab控制E4438C信号发生器产生三种典型干扰的程序,包括宽带干扰,梳状干扰和随机干扰及其组合形式
  • matlab中的伪随机数原理

    千次阅读 2013-10-05 09:08:21
    真正的随机数是得通过现实世界中随机发生的物理事件来产生的,如放射性物质随机数发生器是通过某种放射性物质放射出的粒子数来获得随机数,还有通过电路产生高频噪声来获得随机数等。不过这种硬件随机数发生器价格都...
  • Wichmann-Hill算法1、算法介绍 为了得到长周期的随机数发生器,可将两个周期相差很小的波形序列相加,如定义3个随机数发生器,它们都是全周期的则它们合成输出等价的乘性发生器中a=16555425264690,m=2.7817*1013。...
  • matlab开发-RandomVariableGeneration。随机变量发生器的集合
  • matlab开发-Randommazegenerator。一种在Matlab中实现的随机迷宫发生器。迷宫总是可以解决的。
  • matlab开发-Distributions

    2019-08-25 01:53:59
    matlab开发-Distributions。CDF、INV CDF、PDF、HF、CHF、随机发生器和对数似然函数。
  • matlab开发-MersenneTwister

    2019-08-24 16:46:34
    matlab开发-MersenneTwister。梅森捻线机均匀伪随机发生器
  • matlab开发-RANDRAW

    2019-08-22 08:57:51
    matlab开发-RANDRAW。有效随机变量发生器(来自超过50个分布)。
  • matlab开发-tergen1dlevel

    2019-08-27 14:55:09
    matlab开发-tergen1dlevel。一维随机地形发生器
  • matlab开发-Benfordslarwrandomnumergenerator公司。产生一组符合本福德定律的数的伪随机发生器
  • MATLAB信号处理详解-...2.1.2 波形发生器 9 2.1.3 序列的操作 14 2.2 离散时间系统 16 2.2.1 线性时不变系统 16 ……………………………… 管理员提示:文件已损坏! Figure13.jpg
  • matlab开发-伽玛兰多瓦发电机。伽玛随机变量发生器
  • matlab开发-prng的Blumblumshubalgorithm。一种基于blum-blum-shub算法的伪随机发生器

空空如也

空空如也

1 2 3 4
收藏数 62
精华内容 24
关键字:

matlab随机发生器

matlab 订阅