The world’s Largest Sharp Brain Virtual Experts Marketplace Just a click Away
Levels Tought:
Elementary,Middle School,High School,College,University,PHD
| Teaching Since: | Jul 2017 |
| Last Sign in: | 304 Weeks Ago, 6 Days Ago |
| Questions Answered: | 15833 |
| Tutorials Posted: | 15827 |
MBA,PHD, Juris Doctor
Strayer,Devery,Harvard University
Mar-1995 - Mar-2002
Manager Planning
WalMart
Mar-2001 - Feb-2009
this is a c++ question the question is below, the file is provided, just need to add a operator.
#include <string>
#include <vector>
#include "Signal.h"
int Signal::min() const {
   int min = m_samples[0];
   for (int i = 1; i < length(); i++) {
       if (min > m_samples[i]) {
           min = m_samples[i];
       }
   }
   return min;
}
int Signal::max() const {
   // Fill in function defn
   return 0;
}
double Signal::avg() const {
   double avg = 0;
   for (int i = 0; i < length(); i++) {
       avg += m_samples[i];
   }
   return avg / length();
}
int Signal::energy() const {
   int enr = 0;
   for (int i = 0; i < length(); i++) {
       enr += m_samples[i] * m_samples[i];
   }
   return enr;
}
double Signal::mse(const Signal& sig) const {
   int size = (length() > sig.length()) ? length() : sig.length();
   double pwr = 0;
   for (int i = 0; i < size; i++) {
       double err = operator[](i) - sig[i];
       pwr += err * err;
   }
   return pwr / size;
}
Signal Signal::downSample(int factor) {
   vector<int> tmp;
   for (int i = 0; i < length(); i += factor) {
       tmp.push_back(m_samples[i]);
   }
   m_samples = tmp;
   return Signal(m_samples);
}
Signal Signal::operator+(int offset) {
   vector<int> tmp;
   for (int i = 0; i < length(); i++) {
       tmp.push_back(m_samples[i] + offset);
   }
   return Signal(tmp);
}
Signal Signal::operator+(const Signal& sig) {
   int size = (length() > sig.length()) ? length() : sig.length();
   vector<int> tmp;
   for (int i = 0; i < size; i++) {
       tmp.push_back(operator[](i) + sig[i]);
   }
   return Signal(tmp);
}
Signal Signal::operator*(int scale) {
   // Fill in function defn
   Signal sig;
   return sig;
}
Signal Signal::operator*(const Signal& sig) {
   vector<int> tmp(length() + sig.length() - 1, 0);  Â
   for (int i = 0; i < tmp.size(); i++) {
       for (int j = 0; j < length(); j++) {
           tmp[i] += m_samples[j] * sig[i - j];
       }
   }
   return Signal(tmp);
}
Signal Signal::operator>>(unsigned int shift) {
   vector<int> tmp;
   for (int i = 0; i < shift; i++) {
       tmp.push_back(0);
   }
   for (int i = 0; i < length(); i++) {
       tmp.push_back(m_samples[i]);
   }
   m_samples = tmp;
   return Signal(m_samples);
}
Signal Signal::operator<<(unsigned int shift) {
   vector<int> tmp;
   for (int i = shift; i < length(); i++) {
       tmp.push_back(m_samples[i]);
   }
   m_samples = tmp;
   return Signal(m_samples);
}
int Signal::operator[](int index) const {
   if (index < 0 || index >= length()) {
       return 0;
   }
   return m_samples[index];
}
Signal operator+(int offset, const Signal& sig) {
   vector<int> tmp;
   for (int i = 0; i < sig.length(); i++) {
       tmp.push_back(sig[i] + offset);
   }
   return Signal(tmp);
}
Signal operator*(int scale, const Signal& sig) {
   vector<int> tmp;
   for (int i = 0; i < sig.length(); i++) {
       tmp.push_back(sig[i] * scale);
   }
   return Signal(tmp);
}
ifstream& operator>>(ifstream& ifs, Signal& sig) {
   sig.m_samples.clear();
   string str1, str2;
   ifs >> str1 >> str2;
   while (true) {
       int idx = 0, smp = 0;
       ifs >> idx >> smp;
       if (ifs.eof()) {
           break;
       }
       sig.m_samples.push_back(smp);
   }
   return ifs;
}
ostream& operator<<(ostream& os, const Signal& sig) {
   os << "Sample\tValue" << endl;
   for (int i = 0; i < sig.length(); i++) {
       os << i << "\t" << sig[i] << endl;
   }
   return os;
}
ofstream& operator<<(ofstream& ofs, const Signal& sig) {
   ofs << "Sample\tValue" << endl;
   for (int i = 0; i < sig.length(); i++) {
       ofs << i << "\t" << sig[i] << endl;
   }
   return ofs;
}
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
class Signal {
private:
   vector<int> m_samples;
public:
   Signal() {
       m_samples.clear();
   }
   Signal(const vector<int>& smp) :
       m_samples{smp} {
   }
   Signal(const Signal& sig) :
       m_samples{sig.m_samples} {
   }
   ~Signal() {
       m_samples.clear();
   }
   unsigned int length() const {
       return m_samples.size();
   }
   int min() const;
   int max() const;
   double avg() const;
   int energy() const;
   double mse(const Signal& sig) const; // Mean Squared Error
   Signal downSample(int factor);
   Signal operator+(int offset); // ex: sig + 2
   Signal operator+(const Signal& sig); // ex: sig1 + sig2
   Signal operator*(int scale); // ex: sig * 2
   Signal operator*(const Signal& sig); // ex: sig1 * sig2
   Signal operator>>(unsigned int shift); // ex: sig >> 2
   Signal operator<<(unsigned int shift); // ex: sig << 2
   int operator[](int index) const;
   friend ifstream& operator>>(ifstream& ifs, Signal& sig); // ex: ifs >> sig
};
Signal operator+(int offset, const Signal& sig); // ex: 3 + sig
Signal operator*(int scale, const Signal& sig);Â // ex: 3 * sig
ostream& operator<<(ostream& os, const Signal& sig); // ex: cout << sig
ofstream& operator<<(ofstream& ofs, const Signal& sig); // ex: ofs << sig
#include "Signal.h"
int main(int argc, char* argv[]) {
   Signal b{{1}};
   Signal s1{{1, 2, 3, 4, 5, 4, 3, 2, 1}};
   Signal s2;
   for (int i = 0; i < s1.length(); i++) {
       Signal t = b;
       t >> i;
       t = s1[i] * t;
       s2 = s2 + t;
       if (s1 == s2) {
           if (i != s1.length() - 1) {
               cout << "Your operator==() function implementation is WRONG!" << endl;
               return -1;
           }
       } else {
           if (i == s1.length() - 1) {
               cout << "Your operator==() function implementation is WRONG!" << endl;
               return -1;
           }
       }
   }
   cout << "Your operator==() function implementation is CORRECT!" << endl;
   return 0;
}
----------- Â ----------- H-----------ell-----------o S-----------ir/-----------Mad-----------am ----------- Th-----------ank----------- yo-----------u f-----------or -----------you-----------r i-----------nte-----------res-----------t a-----------nd -----------buy-----------ing----------- my----------- po-----------ste-----------d s-----------olu-----------tio-----------n. -----------Ple-----------ase----------- pi-----------ng -----------me -----------on -----------cha-----------t I----------- am----------- on-----------lin-----------e o-----------r i-----------nbo-----------x m-----------e a----------- me-----------ssa-----------ge -----------I w-----------ill----------- be----------- qu-----------ick-----------ly