Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Define a class, float_seq , to encapsulate a sequence {V} of samples using float

ID: 3634314 • Letter: D

Question

Define a class, float_seq, to encapsulate a sequence {V} of samples using float precision.

Sequences are to be fully initialised with their data on creation.

Provide (member?) functions that read and write the i’th element in a float_seq and

which check for valid i, warning the caller (how?) in the event of an invalid value.

Provide a (member?) function to allow read only access to the number of elements in

the float_seq.

Provide a (member?) function that zeros all the elements of the sequence.

Define a class FIR to encapsulate the FIR filter using float precision.

Filters are to be fully initialised on creation.

Provide (member?) functions that read and write the ith coefficient of the filter and which check for valid i, warning the caller in the event of an invalid value.

Provide a (member?) function that returns a (reference to, pointer to or instance of –as you feel appropriate?) float_seq containing the filter coefficients.

Both classes float_seq and FIR are to be equipped with destructors, copy constructors and

assignment operators.

Overload the stream operators for the float_seq and FIR classes.

Overload the + operator for the class float_seq so that the following,

float_seq a,b,c;

c=a+b;

means concatenation, i.e. that the sequence c consists of the values of sequence a

followed by those of sequence b, e.g. {1,2,3,4} + {5,6,7,8,9}={1,2,3,4,5,6,7,8,9}

Provide a (member?) function for the class FIR whose argument identifies an input

float_seq, applies the filtering operation to that sequence and returns the output

float_seq (reference to, pointer to or instance of – as you feel appropriate?)

Write a main code that reads filter coefficient data from the file filter.txt and creates a

filter, reads an input float_seq from the file input.txt, filters the input float_seq using the

filter and then writes the output float_seq to the file, output.txt. The input file format is

4 Number of filter coefficients

1 2 1 2 The coefficients

6 Number of values in the data sequence

1.4 5.2 2.5 1.1 1.7 9.3 The data sequence

Subject: Digital Filtering An analogue signal V(t), has been sampled at uniformly separated values of t to give a digital sequence V(deltat). V(2deltat) ... V(ndeltat). We will denote this by {V}=V1,V1 ... Va. Digital filters arc algorithms that tic an input sequence {V^in} and generate an output sequence We will initially consider the so called Finite Impulse Response. FIR, type of filter which is defined by where the coefficients a0 right arrow ak define the particular response of the filter Note that if V0^th is the first element of {V^in} then it can be assumed that V^in I =0 for I

Explanation / Answer

// Purpose // A program to demonstrate the application of a simple digital filter // // Overview // A sequence of data items and digital filter values need to be entered by the // user. The application of the filter to the data involves a simple convolution // operation. The filtered data are stored separately. // // Example // before filtering: // data_in = [0 1 3 6 3 1 0] // filter = [-0.5 1 -0.5] // after filtering: // data_out = [-0.5 -0.5 3 -0.5 -0.5] // where // data_out[0]=data_in[0]*filter[0]+data_in[1]*filter[1]+data_in[2]*filter[2] // data_out[1]=data_in[1]*filter[0]+data_in[2]*filter[1]+data_in[3]*filter[2] // data_out[2]=data_in[2]*filter[0]+data_in[3]*filter[1]+data_in[4]*filter[2] // data_out[3]=data_in[3]*filter[0]+data_in[4]*filter[1]+data_in[5]*filter[2] // data_out[4]=data_in[4]*filter[0]+data_in[5]*filter[1]+data_in[6]*filter[2] // // The program checks the following // 1.The data and filter values must have been entered before the filter is // applied // 2.The filter is not applied if the number of filter values is greater than // the number of input data values // 3.The data and filter values must have been entered and the filter applied // before the filtered data can be displayed #include using namespace std; // the data values and the filter struct TheFilter { double* Values; // the filter values unsigned long Length; // number of filter values bool Valid; // true if the filter values have been Valid by the user }; struct TheData { double* Values; // holds the data to be filtered unsigned long Length; // number of data values bool Valid; // true if the data values have been Valid by the user }; // function return values enum {OK,FILTER_TOO_LONG}; // function prototypes void EnterData(TheData& DataIn); void EnterFilter(TheFilter& Filter); int ApplyFilter(TheFilter& Filter, TheData& DataIn, TheData& DataOut); void DisplayData(TheFilter& Filter, TheData& DataIn, TheData& DataOut); // Control the principal operations of the program // Arguments: None // Returns: 0 on completion int main() { // define the filter and its initial values TheFilter Filter = {0,0,false}; // define the original data and its initial values TheData OriginalData = {0,0,false}; // define the filtered data and its initial values TheData FilteredData = {0,0,false}; char UserInput; // loop until the user wishes to exit while (1) { // show the menu of options cout
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote