• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: Matlab
  • 标签: fsk  

资源简介

matlab源代码 ,4fsk调制。

资源截图

代码片段和文件信息

%function txdata = ofdm4fsk(S1 Nfft Nused G symbolnum)

        Nfft=256;%FFT大小
        Nused=160;%使用子载波数
        G=0.25;%保护间隔比例
        symbolnum=100;%每一帧的符号数Nframe
        S=randi([0 1] 1 symbolnum*Nused*2/4/2);%原始数据01
        S1=convcoding(S);%卷积编码1/2
%S1:卷积编码后的编码数据,为串行数据
%Nfft:载波数
%Nused:使用的载波数
%G:保护间隔比例
%symbolnum:OFDM符号数
%实现对编码数据的map对应,加虚载波,ifft变换,加cp四个功能,最后以串行数据输出
%0...0 - 1 0 1...0 - 0...0 | 0...0-1 0 1...0 1-0...0 | ...
l1 = length(S1);%求卷积后的数据的长度   卷积之后信号的长度变了。
X1 = reshape(S1 2 l1/2).‘;%这样X1变成L1/2 * 2。即每列有L1/2个元素,有2列。    没加转置之前,,就是将S1变成2*l1/2(即每列有2个元素,有l1/2列) 就是将S1按列的顺序每取两个作为一列
                            %将一列变成一行     加上转置之后,第一列是原始数据的1 3 5……
                            %第二列是原始数据的2 4 6……
                            
X2 = bi2de(X1 2 ‘left-msb‘);%将2进制的数按照从左往右看 转换为十进制   是按照一行 一行来转  2代表的是将2进制转化为十进制 3代表的是将3进制转化为十进制,区别是 2 进制中的 11表示的是十进制中的3  三进制中的11 表示成十进制是4
                             %即将每行都转为成十进制的数值  每行的元素转化过来 然后变成一个列向量
                            %X2变成L1/2 * 1  即每列有L1/2个元素 是一个列向量  每行的元素范围为:0-3
                            
                           
                            
fsk4table = [0 0 0 1  
             0 0 1 0
             0 1 0 0
             1 0 0 0]; %因为MATLAB中的维数是从1开始的
X3 = fsk4table(: X2+1);%取出该矩阵的第X2+1列的元素  为什么是x2+1因为是上面二进制转化为十进制的可能有 0       2进制转化为十进制  一行是2比特 所以转换成的十进制的数是0----3
             

评论

共有 条评论