专栏
标签
数据转换
一般问题
发布于 2025-04-21 19:14:38
查看 15过去433天

data4是我实际想要作为输入的数据,矩阵格式是27001,复数形式,dataIn是示例输入,格式矩阵是1122,也是复数形式但是工作区的值是绝对值要这么才能将data4作为OFDMmod的输入数据?
using TySignalProcessing
using TyPlot
using TyMath
using TyCommunication

#-------------------------------1、生成随机信号-------------------------------------
#信源bit,随机信号
rng = MT19937ar(1234)
y = randn(rng, 800, 1)

#--------------------2、对信号进行信源编码-dpcm编码-------------------------
initcodebook = collect(-1:0.005:2)

优化参数

predictor, codebook, partition = dpcmopt(vec(y), 1, initcodebook)
encodex, = dpcmenco(vec(y), codebook, partition, vec(predictor))

十进制转二进制

i_b = int2bit(encodex, 9)

#--------------------3、对信号进行差错控制编码-卷积编码---------------------

生成网格结构

trellis1 = poly2trellis([5 4], [23 35 0; 0 5 13])
#卷积编码
codedout, = convenc(i_b, trellis1) #2进制输入信号

#----------------16QAM调制--------------
hQAMMod = comm_GeneralQAMModulator()

hQAMMod.Constellation = [-3-3im, -3-1im, -3+3im, -3+1im,
-1-3im, -1-1im, -1+3im, -1+1im,
3-3im, 3-1im, 3+3im, 3+1im,
1-3im, 1-1im, 1+3im, 1+1im ]

data4 = bit2int(codedout,4) #16进制输入信号,每4位二进制码转换为1位16进制码

modData4 = step(hQAMMod, data4) #16QAM调制后的输入数据,2700*1

#-------------OFDM调制----------------------
ofdmm = comm_OFDMModulator(;
FFTLength=128,
NumGuardBandCarriers=[4; 3],
PilotInputPort=true,
PilotCarrierIndices=cat([12; 26; 40; 54; 68 ; 82; 96; 110], [11; 27; 39; 55; 69; 83; 97; 111]; dims=2), #导频位置分配,cat串联数组,dim=列数
NumSymbols=2, #OFDM符号数量
InsertDCNull=true,
)

modDim = info(ofdmm);

dataIn = complex.(randn(rng, 112, 2), randn(rng, 112, 2))
pilotIn = complex.(rand(rng, 8,2), rand(rng, 8, 2))

modSig = step(ofdmm, dataIn, pilotIn)#调制,modsig为调制输出信号

ofdmd = comm_OFDMDemodulator(;
FFTLength=128,
NumGuardBandCarriers=[4, 3],
RemoveDCCarrier=true,
PilotCarrierIndices=[12 11; 26 27; 40 39; 54 55],
PilotOutputPort=true,
CyclicPrefixLength=16,
NumSymbols=2,
NumReceiveAntennas=1,
)

dataOut, pilotOut = step(ofdmd, modSig)
showResourceMapping(ofdmm)

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
通信

全部回答 1

发布于 2025-04-22 10:25:31

您好,请您根据以下信息修改相应代码
输入OFDMModulator的信号data的size需要满足条件:

  • size(data,1) 为子载波长度,计算方法为 FFTLength - sum(NumGuardBandCarriers)-hasDCNull - 导频长度(如果有的话,PilotCarrierIndices的总元素数/size(PilotCarrierIndices,2))
  • size(data,2)为 NumSymbols
  • size(data,3)为NumTransmitAntennas
    需要根据data的size对结构体进行设置
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天