function res = ChangeZn2MReg(Zc,path,filename) %ChangeZn2MReg: 将算法给的Zn顺序值更改为MREG中的存储顺序 % Zc: LDPC提升值 % path: 文件路径 % filename: 文件名 ACodeBlockIndex = [1 2 3 5 6 7 12 13 15 18 20 24 26]; BCodeBlockIndex = [4 8 9 10 11 14 16 17 19 21 22 23 25]; res = 0; Data = u32DataFromFile(path,filename); Data = Int32ToInt8(Data); DotIndex = find(filename == '.'); Afilename_mreg = [filename(1:DotIndex-1) '_Amreg' filename(DotIndex:end)]; Bfilename_mreg = [filename(1:DotIndex-1) '_Bmreg' filename(DotIndex:end)]; if Zc<=64 Data = reshape(Data,Zc,[]); Afid = fopen([path Afilename_mreg],'w'); if -1 == Afid fprintf('write %s filled.\n',Afilename_mreg); res = -1; return; end Bfid = fopen([path Bfilename_mreg],'w'); if -1 == Afid fprintf('write %s filled.\n',Afilename_mreg); res = -1; return; end AData = Data(:,ACodeBlockIndex); BData = Data(:,BCodeBlockIndex); fprintf(Afid,'0x%08x\n',Int8ToInt32(AData)); fprintf(Bfid,'0x%08x\n',Int8ToInt32(BData)); fclose(Afid);fclose(Bfid); elseif Zc == 256 Data = reshape(Data,Zc,[]); Afid = fopen([path Afilename_mreg],'w'); if -1 == Afid fprintf('write %s filled.\n',Afilename_mreg); res = -1; return; end Bfid = fopen([path Bfilename_mreg],'w'); if -1 == Afid fprintf('write %s filled.\n',Afilename_mreg); res = -1; return; end AData = Data(:,ACodeBlockIndex); BData = Data(:,BCodeBlockIndex); fprintf(Afid,'0x%08x\n',Int8ToInt32(AData)); fprintf(Bfid,'0x%08x\n',Int8ToInt32(BData)); fclose(Afid);fclose(Bfid); else Data = reshape(Data,Zc,[]); %zc>64, mod(zc,8)===0 Afid = fopen([path Afilename_mreg],'w'); if -1 == Afid fprintf('write %s filled.\n',Afilename_mreg); res = -1; return; end Bfid = fopen([path Bfilename_mreg],'w'); if -1 == Afid fprintf('write %s filled.\n',Afilename_mreg); res = -1; return; end AData = Data(:,ACodeBlockIndex); BData = Data(:,BCodeBlockIndex); fprintf(Afid,'0x%08x\n',Int8ToInt32(AData)); fprintf(Bfid,'0x%08x\n',Int8ToInt32(BData)); fclose(Afid);fclose(Bfid); end end