"); //-->
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文件的内容:

这种方法自己还是感觉有些麻烦,不知道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);

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
《嵌入式系统设计》15-嵌入式系统设计U-BOOT(Bootloader的一些介绍)
自动驾驶中基于地图的视觉定位方法
问大虾,关于VXWORKS调试环境网卡的问题??
ucos里有没有定时器,我要定时采集数据。应该怎么做呀。
灵敏的频率解调器(LM565、LM111)
ST推出简单灵活高效的1A降压转换器,为智能电表、家电和工业电源转换器提供低压电源
用有源滤波器构成的频移解调器(748)
尼得科3家集团公司联合参展2025年上海国际半导体展览会
浮地非隔离半桥栅极驱动器
由NE561B构成的双边带调制解调器
芯科科技推出面向未来应用的BG29超小型低功耗蓝牙无线SoC
安富利:供应链强则企业强
PLL调频解调器(LM565CN、RC4558DN)
QNX解码2025年汽车行业的关键趋势
问大虾,关于VXWORKS调试环境串口连接的错误的问题??
《嵌入式系统设计》17-嵌入式系统设计U-BOOT(跳转到stage2的C入口点到嵌入式系统Bootloader)
光传输无人值守站计算机远程监测系统的研制
《嵌入式系统设计》14-软硬件协同设计技术(软硬件协同设计内容到划分)及软硬件系统划分技术(开始到系统划分)
尼得科全球电器恩布拉科品牌的最小型压缩机将亮相AWE展会
《嵌入式系统设计》14-1-划分及作业布置
《嵌入式系统设计》18-嵌入式系统设计U-BOOT(LILO到连接脚本文件)
光纤扰动入侵检测系统的设计与实现
567调频解调器
Solidigm高密度方案解决数据中心存储难题
由Nordic赋能的智能镜片可自动调节焦距,辅助增强远近视力
光功率计自动测试系统设计
高温液体流量检测系统及其在锌精馏中的应用
ucos里有没有定时器,我要定时采集数据。应该怎么做呀。
光点测试仪阴极脉冲放大器的改进设计
请教:s3c4510b+uclinux如何支持标准串口通讯?