aboutsummaryrefslogtreecommitdiffstats
path: root/CommonLibs/BitVector.cpp
diff options
context:
space:
mode:
authorkurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597>2013-05-31 21:47:25 +0000
committerkurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597>2013-05-31 21:47:25 +0000
commit5a87247fdf2768a6408e0b87c210cebda85bc996 (patch)
treeb538e7e42f8a7ba6c53e1b0bc22bfb359b1e0ef9 /CommonLibs/BitVector.cpp
parentbec41039bf2ec07c04a6e8b0b586b085ab9cd74c (diff)
syncing commonlibs with Many thanks to Michael Iedema for these patches, makes config a lot better.
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@5655 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Diffstat (limited to 'CommonLibs/BitVector.cpp')
-rw-r--r--CommonLibs/BitVector.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/CommonLibs/BitVector.cpp b/CommonLibs/BitVector.cpp
index 54a3edc..7487834 100644
--- a/CommonLibs/BitVector.cpp
+++ b/CommonLibs/BitVector.cpp
@@ -29,6 +29,7 @@
#include "BitVector.h"
#include <iostream>
#include <stdio.h>
+#include <sstream>
using namespace std;
@@ -274,9 +275,6 @@ void BitVector::unmap(const unsigned *map, size_t mapSize, BitVector& dest) cons
-
-
-
ostream& operator<<(ostream& os, const BitVector& hv)
{
for (size_t i=0; i<hv.size(); i++) {
@@ -527,6 +525,22 @@ void SoftVector::decode(ViterbiR2O4 &decoder, BitVector& target) const
+// (pat) Added 6-22-2012
+float SoftVector::getEnergy(float *plow) const
+{
+ const SoftVector &vec = *this;
+ int len = vec.size();
+ float avg = 0; float low = 1;
+ for (int i = 0; i < len; i++) {
+ float bit = vec[i];
+ float energy = 2*((bit < 0.5) ? (0.5-bit) : (bit-0.5));
+ if (energy < low) low = energy;
+ avg += energy/len;
+ }
+ if (plow) { *plow = low; }
+ return avg;
+}
+
ostream& operator<<(ostream& os, const SoftVector& sv)
{
@@ -578,6 +592,14 @@ void BitVector::hex(ostream& os) const
os << std::dec;
}
+std::string BitVector::hexstr() const
+{
+ std::ostringstream ss;
+ hex(ss);
+ return ss.str();
+}
+
+
bool BitVector::unhex(const char* src)
{
// Assumes MSB-first packing.