专栏中心

EEPW首页 > 专栏 > Matlab生成循环移位M序列,并计算M序列的自相关

Matlab生成循环移位M序列,并计算M序列的自相关

发布人:0750long 时间:2010-03-06 来源:工程师 发布文章
Matlab生成循环移位M序列,并计算M序列的自相关

 

 

1、产生循环移位M序列   

    最近做一个扩频通信方面的东西,需要产生一组扩频码,最简单的就是用一个M序列,循环移位产生过。在用Matlab产生的时候发现Matlab有两个移位命令:

(1)、矩阵循环移位:circshift

    例如:b = circshift(a,[x,y]) 其中a为待移位的矩阵,x表示上下移位位数(正数表示向下移位),y表示左右移位位数(正数表示向右移位)

>> x = [1,2,3;4,5,6;7,8,9]

x =

     1     2     3
     4     5     6
     7     8     9

>> y = circshift(x,[1,-1])

y =

     8     9     7
     2     3     1
     5     6     4

(2)、比特移位:bitshift(不能做循环移位)

    例如:b = bitshift(a,k,n) 其中a是待移位数据,k是移位的位数(正数表示左移),n为移位后保留的位数(当左移,超出的位数将被舍弃)

>> x = 131;
>> x_bit = dec2bin(x)

x_bit =

10000011

>> y = dec2bin(bitshift(x,2,8))

y =

1100

    要想完成bit的循环移位,可以采用这样的方法:

    例如,待移位的数据为x = 3139384450,它是一个32bit的M序列,现在需要产生x依此循环左移一位所产生的共32个数据,可以采用以下程序完成,将产生的32个数据写入一个.mif文件:

x = 3139384450;
y = dec2bin(x);     //将10进制变为2进制,这时二进制数据的0,1其实是用字符表示的,这样就形成了一个1x32的行向量

z(1) = x;
for i = 2 : 32
    y = circshift(y,[0,-1]);    //对与每一行的数据进行左移
    z(i) = bin2dec(y);          //将移位后的数据再次变为十进制
end

miffile('dsss_code.mif',z,32,32);   //调用miffile函数,将数据写入.mif文件

一下是mif文件的内容:

image

    这种方法自己还是感觉有些麻烦,不知道Matlab还有没有更好的函数可以实现bit的循环移位。

2、计算M序列的自相关

    计算相关可以利用xcorr函数,计算自相关y = xcorr(x)

a = bitget(3139384450, 32:-1:1);    //3139384450是一个32bit的M序列对应的10进制数,所以先变成32个0,1数据。
b = xcorr(a);
plot(b);

image

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

《嵌入式系统设计》15-嵌入式系统设计U-BOOT(Bootloader的一些介绍)

视频 2010-02-02

自动驾驶中基于地图的视觉定位方法

ST推出简单灵活高效的1A降压转换器,为智能电表、家电和工业电源转换器提供低压电源

尼得科3家集团公司联合参展2025年上海国际半导体展览会

浮地非隔离半桥栅极驱动器

芯科科技推出面向未来应用的BG29超小型低功耗蓝牙无线SoC

安富利:供应链强则企业强

QNX解码2025年汽车行业的关键趋势

《嵌入式系统设计》17-嵌入式系统设计U-BOOT(跳转到stage2的C入口点到嵌入式系统Bootloader)

视频 2010-02-02

《嵌入式系统设计》14-软硬件协同设计技术(软硬件协同设计内容到划分)及软硬件系统划分技术(开始到系统划分)

视频 2010-02-02

尼得科全球电器恩布拉科品牌的最小型压缩机将亮相AWE展会

《嵌入式系统设计》14-1-划分及作业布置

视频 2010-02-02

《嵌入式系统设计》18-嵌入式系统设计U-BOOT(LILO到连接脚本文件)

视频 2010-02-02

Solidigm高密度方案解决数据中心存储难题

由Nordic赋能的智能镜片可自动调节焦距,辅助增强远近视力

更多 培训课堂
更多 焦点
更多 视频

技术专区