⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 variablenode.c

📁 根据LDPC码中码子的构造方法中的PEG算法
💻 C
字号:
#include <iostream.h>#include <stdio.h>#include "VariableNode.h"#include "Constant.h"//#include "System.h"VariableNode::VariableNode(const char *name, int id, int numNeighbours, int size) : Node(name, id, numNeighbours) {  (*this).size = size;}void VariableNode::update(int port) {  if (numNeighbours > 1) {        // initialization of the output message    outMessages[port][0] = 0.0;        // update    for (int n = 0; n < numNeighbours; n++) {      if (n == port) {	continue;      }      outMessages[port][0] += (*neighbours[n]).getOutMessage(portNumbers[n])[0];    }  }}void VariableNode::initAsFirstTrellisState(double *outMessageValues){  if (outMessageValues == NULL) {    // assume that the zero state is prefered    for (int i = 1; i < size; i++) {      outMessages[0][i] = EPS;    }    outMessages[0][0] = 1.0 - (size - 1)*EPS;  } else {    for (int i = 0; i < size; i++) {      outMessages[0][i] = outMessageValues[i];    }  }}void VariableNode::reset(void) {  for (int n = 0; n < numNeighbours; n++) {    for (int i = 0; i < size; i++) {      outMessages[n][i] = 0.0;  //  1.0/size;    }  }  }int VariableNode::getSize(void) {  return (size);}void VariableNode::draw(void) {  printf("NODE: %20s, %6d\n", name, id);  printf("---------------------------------------------\n");  printf("PORT      NEIGHBOUR                OUTMESSAGE\n");  for (int n = 0; n < numNeighbours; n++) {    printf("%3d       %20s%15f\n", n, (*neighbours[n]).getName(), outMessages[n][0]);    for (int i = 1; i < size; i++) {      printf("%45f\n", outMessages[n][i]);    }  }  printf("\n");}void VariableNode::draw(FILE *file) {  fprintf(file, "NODE: %20s, %6d\n", name, id);  fprintf(file, "---------------------------------------------\n");  fprintf(file, "PORT      NEIGHBOUR                OUTMESSAGE\n");  for (int n = 0; n < numNeighbours; n++) {    fprintf(file, "%3d       %20s%15f\n", n, (*neighbours[n]).getName(), outMessages[n][0]);    for (int i = 1; i < size; i++) {      fprintf(file, "%45f\n", outMessages[n][i]);    }  }  fprintf(file, "\n");}void VariableNode::test(void) {  VariableNode *node1, *node2, *node3, *node4;  node1 = new VariableNode("AAA", 1, 2, 2);  node2 = new VariableNode("BBB", 2, 2, 2);  node3 = new VariableNode("CCC", 3, 1, 2);  node4 = new VariableNode("DDD", 4, 3, 2);  VariableNode::connect(node1, node4, 0, 0, 2);  VariableNode::connect(node2, node4, 0, 1, 2);  VariableNode::connect(node3, node4, 0, 2, 2);  VariableNode::connect(node1, node2, 1, 1, 2);  (*node1).draw();  (*node2).draw();  (*node3).draw();  (*node4).draw();  (*node1).reset();  (*node2).reset();  (*node3).reset();  (*node4).reset();  (*node1).draw();  (*node2).draw();  (*node3).draw();  (*node4).draw();  delete node1;  node1 = NULL;  delete node2;  node2 = NULL;  delete node3;  node3 = NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -