首页 > 其他分享 >Dithered golden interleaver 黄金分割伪随机交织器 代码备份

Dithered golden interleaver 黄金分割伪随机交织器 代码备份

时间:2024-01-15 12:11:20浏览次数:20  
标签:golden Nc interleaver Dithered varD Nr varN

目录

有错误欢迎指正

公式来源

Design of a Modified Interleaving Algorithm Based on Golden Section Theory Enhancing the Performance of Turbo Codes

Dithered golden interleaver

(*---------Dithered golden interleaver---------*)
Clear["Global`*"];
g = g /. Solve[g/1 == (1 - g)/g && g > 0, g, 
    Reals][[1]];(*golden section value*)
varN = 1024;(* the length of the data sequence *)
r = 1;(* a preselected non-zero integer defining a spacing between \
any pair of input elements thaat are to be maximally spread*)
j = 0;(* a preselected integer modulo r*)
j = Floor[g*r];
m = 2;(* a preselected non-zero positive integer preferably set to 1 \
or 2*)
varC = varN*(g^m + j)/r;
varD = 0.01;(*the normalized width of the dither distribution \
\mathbf{d}(n) and is set to 0.01 *)
vecd = RandomReal[{0, varD*varN}, varN]; (*a dither vector*)
s = 0; (*any real starting value, usually set to 0, but other real \
values can be selected*)
vecv = Table[
  Floor[s + n*varC + vecd[[n]]]~Mod~varN, {n, 1, 
   Length@vecd}];(* the dithered golden vector v*)
(vecZ = Ordering[vecv]) // ListPlot
(vecAlpha = InversePermutation[vecZ]) // ListPlot
Print["---Verification---"]
veca = Sort[vecv]; (*Sorted vecv*)
veca == Table[vecv[[vecZ[[n]]]], {n, 1, varN}] 
And @@ Table[vecZ[[vecAlpha[[n]]]] == n, {n, 1, varN}] 
And @@ Table[vecAlpha[[vecZ[[n]]]] == n, {n, 1, varN}] 

when varD = 0.01; (*the normalized width of the dither distribution \mathbf{d}(n) *)

when varD = 0.1; (*the normalized width of the dither distribution \mathbf{d}(n) *)

The Matrix-Dithered Golden Interleaving Algorithm

(*--------The Matrix-Dithered Golden Interleaving Algorithm--------*)
ClearAll["Global`*"];
SetAttributes[MyDebugPrint, HoldFirst];
MyDebugPrint[var_] := 
 Module[{varName, value}, varName = SymbolName[Unevaluated[var]];
  value = Evaluate[var];
  Print[varName, " = ", MatrixForm[value]];]
s = 0; m = 1; varD = 0.001; j = 9;
r = 15;
varN = 4096;
g = g /. Solve[g/1 == (1 - g)/g && g > 0, g, 
    Reals][[1]];(*golden section value*)vecDRow = 
 RandomReal[{1, varN*varD}, varN];
vecDColumn = RandomReal[{1, varN*varD}, varN];
If[varN < 512, Nr = Floor[varN^(1/2)], Nr = Floor[varN^(1/3)]];
MyDebugPrint[Nr];
Nc = Ceiling[varN/Nr];
MyDebugPrint[Nc];
varCrow = Nr*(g^m + j)/r;
varCcolumn = Nc*(g^m + j)/r;
Din = Array[Subscript[x, #] &, varN];
Din = Array[# &, varN];
(M = ArrayReshape[Din, {Nr, Nc}]); MyDebugPrint[M];
(Mdrow = ArrayReshape[vecDRow, {Nr, Nc}]); MyDebugPrint[Mdrow];
(Mdcolumn = 
  Transpose@
   ArrayReshape[vecDColumn, {Nc, Nr}]); MyDebugPrint[Mdcolumn];

matrixVrow = Table[0, {ii, 1, Nr}, {jj, 1, Nc}];
For[ii = 1, ii <= Nr, 
 ii++, {For[jj = 1, jj <= Nc, 
   jj++, {matrixVrow[[ii, jj]] = (s + ii*varCrow + Mdrow[[ii, jj]])~
       Mod~Nr;}]}]
MyDebugPrint[matrixVrow]


matrixZrow = Map[Ordering, matrixVrow];
MyDebugPrint[matrixZrow]

matrixMrow = Table[0, {ii, 1, Nr}, {jj, 1, Nc}];
For[ii = 1, ii <= Nr, 
 ii++, {For[jj = 1, jj <= Nc, 
   jj++, {matrixMrow[[ii, jj]] = M[[ii, matrixZrow[[ii, jj]]]];}]}]
MyDebugPrint[matrixMrow]



(matrixVcolumn = Table[0, {ii, 1, Nr}, {jj, 1, Nc}]);
For[jj = 1, jj <= Nc, 
 jj++, {For[ii = 1, ii <= Nr, 
   ii++, {matrixVcolumn[[ii, 
        jj]] = (s + jj*varCcolumn + Mdcolumn[[ii, jj]])~Mod~Nc;}]}]
MyDebugPrint[matrixVcolumn]

matrixZcolumn = Transpose[Ordering /@ Transpose[matrixVcolumn]];
MyDebugPrint[matrixZcolumn]

matrixMcolumn = Table[0, {ii, 1, Nr}, {jj, 1, Nc}];
For[jj = 1, jj <= Nc, 
 jj++, {For[ii = 1, ii <= Nr, 
   ii++, {matrixMcolumn[[ii, jj]] = 
      matrixMrow[[matrixZcolumn[[ii, jj]], jj]];}]}]
MyDebugPrint[matrixMcolumn]


Dout = ArrayReshape[Transpose@matrixMcolumn, {1, Nr*Nc}];
MyDebugPrint[Dout]
Dout // ListPlot

标签:golden,Nc,interleaver,Dithered,varD,Nr,varN
From: https://www.cnblogs.com/yhm138/p/17964903

相关文章

  • install goldendict-ng-git
    manjaro升级后,goldendict不能启动了,重新安装总是出错,原来是官方的版本不支持qt6了,查阅archlinux文档,获知goldendic-ng-git支持qt6,安装步骤如下,需要的同学可以参看。1.获取PKGBUILD文件,gitclone https://aur.archlinux.org/goldendict-ng-git.git2.安装必须的依赖,可能有......
  • GoldenGate高可用管理组件-XAG部署与管理
    适用范围适用于OracleRAC集群环境,并在创建ACFS共享文件系统中部署GoldenGate软件前提下,部署xag高可用组件对GoldenGate进行高可用管理。实施步骤1.安装XAG#在安装OGG的节点安装xag#使用grid用户安装unzipxagpack_7b.zip-d/tmpcd/tmp/xag./xagsetup.sh--install--directo......
  • GoldenGate之日常维护与管理
    适用范围适用于GoldenGate进程日常维护与管理。GoldenGate日常维护与管理1.检查OGG进程的参数文件#在启动OGG进程前,使用checkprm检查参数的合法性cd$OGG_HOME./checkprmhelp./checkprm./dirprm/extenmo1-Cextract-Mintegratedextract-V#说明-COGG组件名称-Mmod......
  • goldengate add trandata显示最小附加日志already enable,但是info trandata显示disabl
    问题描述:数据库版本11.2.0.4,操作系统版本:windowsserver2012,goldengate版本12.1.2.1.0在给ogg同步表添加trandata的时候,提示supplementalredologdataisalreadyenabled。但是使用infotrandata查看的时候,却显示supplementalredologdataisdisabled。  这时通过......
  • ERROR OGG-01224 Oracle GoldenGate Capture for Oracle, p_lion.prm: Address al
    我的ogg版本OracleGoldenGateCommandInterpreterforOracleVersion12.3.0.1.4OGGCORE_12.3.0.1.0_PLATFORMS_180415.0359_FBOLinux,x64,64bit(optimized),Oracle11gonApr15201821:16:09OperatingsystemcharactersetidentifiedasUTF-8.报错信息2023......
  • goldengate DDL 配置
    ORACLEDDL复制原理DDL复制原理基于数据库全局Trigger的复制,在源数据建立一个Oracle全库级别的Trigger捕捉DDL操作到中间表,Extract读取中间表DDL语句并与DML语句根据scn排序,Pump投递到目标端,目标端Replicat在重现该DDL语句DDL复制和DML复制的区别(1).DDL复制是基于Trigger(2).DML......
  • [YDRG#001] 提瓦特环游记 · 云斗杯 · 七月 Golden 组模拟赛 整理分析--zhengjun
    link总体评价:因为K了,所以好评,练一下思维蛮好的,质量不错比赛2.5hK的。#A.诗人小G初进OI界标准送分,输出\(\frac{s_2-a_2}{a_1}\)。#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;constintN=1e6+10;intn,a[N];voidread(ll&x){ char......
  • 吐槽之Goldendb
    一本正经de胡说八道:国产数据库Goldendb 先来一个带有个人极度偏见的结论:这年头还忽悠着让别人上Goldendb的,不是蠢,就是坏。依据Goldendb高、大、上的定位,纯粹就是一个小马拉大车,研发能力根本匹配不了定位、使命与发展。Goldendb的崛起与发展,得益于N年前大热的分布式数据库,彼时......
  • GoldenEye项目实战
    前言“操千曲而后晓声,观千剑而后识器”,下载靶机项目实战提升自我,这是一个涉及到渗透与CTF联合的实战项目。Descript:我最近完成了一个OSCP类型的易受攻击机器的创建,它以伟大的詹姆斯·邦德电影(甚至更好的n64游戏)《黄金眼》为主题。目标是获得根并捕获秘密的GoldenEye代码-flag......
  • GoldenEye靶机
    知识点1.gcc编译和cc编译gcc(GNUCompilerCollection)是一套用于编译C、C++、Ada、Fortran和其他编程语言的编译器。它是由自由软件基金会(FSF)开发的一个自由软件,它支持几乎所有主流的操作系统和硬件平台。gcc支持多种不同的编程语言,并且它是许多操心系统的默认编译器。cc编译器......