Hello,

I'm trying to convert some code from BASIC to C++.. But, I'm stuck on a particular part..

``````REM CREATE A MATRIX C WITH (COS(DN) , -SIN(DN)) :
DIM C(NE, NS, 2)
FOR N = 0 TO NE / 2
FOR E = 0 TO NE - 1
DC = E / FE
FEN = N * FE / NE
DN = 2 * PY * FEN * DC
C(E, N, 1) = COS(DN)
C(E, N, 2) = -SIN(DN)
NEXT E
NEXT N
``````

Basically, I don't get the:

``````DIM C(NE, NS, 2)
``````

Is this a vector with the size of NE, NS (Which is inputted)?

I also don't get this part:

`````` C(E, N, 1) = COS(DN)
C(E, N, 2) = -SIN(DN)
``````

Since if C was a vector, I wouldn't be able to push back to different data sets into the same vector.. I don't get the 1/2 differenciation. Also, if cos and sin are in C++, is there a -sin() in the math library?

Here is my code so far:

``````#include <iostream>
#include <math.h>
#include <vector>

using namespace std;
int main(int argc, char *argv[]) {

const double PY = 3.14159265;
double FE = 0;
double NE = 0;

cout << "Sampling rate" << endl;
cin >> FE;

cout << "Amount of Measures" << endl;
cin >> NE;

double NS = NE / 2 + 1; // Amount of Sunusoids

vector<double> C (FE*NE);

for(int n=0; (n < NE/2); n++)
{
for(int e=0; (e < NE-1); e++)
{
double DC = e / FE;
double FEN = n*FE/NE;
double DN = 2*PY*FEN*DC;
//C.push_back(cos(DN));
}
}

}
``````

Hoping someone can help me :)

2
Contributors
2
Replies
4
Views
6 Years
Discussion Span
Last Post by phorce

C is a 2-dimensional vector. In c++ you can represent it like this:
vector<vector<NS>> C;
C.resize(NE);

There are other ways to do it as well, such as this boost library

Or you could just use a simple array such as int C[NE][NS]; assuming NE and NS are constants, or you are using a compiler that supports the new c++11 standards.

NS and NE can be either input using cin, read from a file, or just int constants.

Also, if cos and sin are in C++, is there a -sin() in the math library?

Yes, sin() and cos() are part of the standard math library. Look in <cmath> or math.h for others.

Edited by Ancient Dragon

Heyy thanks for your help, it worked! :)

Another part though:

``````FOR N = 0 TO NE / 2
R(N, 1) = 0
R(N, 2) = 0
FOR E = 0 TO NE - 1
A = A(E) * B(N) * C(E, N, 1)
B = A(E) * B(N) * C(E, N, 2)
R(N, 1) = R(N, 1) + A
R(N, 2) = R(N, 2) + B
NEXT E
NEXT N
``````

-- Converted so far in C++

`````` vector<matrix>R(NS);
vector<matrix>A(NE);
for(int N=0; (N < NE/2); N++)
{
R[0][N] = 0;
R[1][N] = 0;

for(int e=0; (e < N1-1); e++)
{

}
}
``````

I don't get this bit:

A = A(E) * B(N) * C(E, N, 1)
B = A(E) * B(N) * C(E, N, 2)

Do I just push_back into A? So for example:

``````A.push_back(A(E) * B(N) * C(E, N, 1));
B.push_back(A(E) * B(N) * C(E, N, 2));
``````

Thanks for your help again :)

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.