If I want to multiple 2d arrays as 1d how should I do it?

I mean ,I have a 2d array and I map it as 1d:

for(int i=0;i<rows*cols;i++)
   A[i]=...

I know how to multiply 2 arrays as 2d ,but representing them as 1d?

Recommended Answers

Where is your 2D array in the code you provided?

Jump to Post

Is what you are trying to do is to transform a vector?

i.e. M1*v1 => v2
i.e. Matrix1 times vector1 = vector2 ?

Jump to Post

Can you show your map of a 'n by m' Matrix to a vector of length n*m ?

And then do regular matrix multipliction ( with appropriate size checks) ...

Then ... M1*M2 => M3

should map to ...

vm1*vm2 => vm3

Jump to Post

All 11 Replies

Where is your 2D array in the code you provided?

It doesn't matter.
I just try to multiply 2 arrays.

For example let's say we have A matrix (2x2) and X matrix (2x1)and we want to compute result matrix(2x1):

int N=2;
int R=1;
for (int i=0;i<N;i++){
   for (int j=0;j<R;j++){
     for (int k=0;k<R;k++){
      result[i*R+j]+=A[i+k*N]*X[i*R+j];
   } 
  }
   }

This doesn't work right.I can't figure how to deal with A matrix I think.

Is what you are trying to do is to transform a vector?

i.e. M1*v1 => v2
i.e. Matrix1 times vector1 = vector2 ?

No,I am trying to multiply 2 2d arrays but dealing with them as 1d.

I also tried:

result[i*R+j]+=A[i*R+k]*X[k*R+j];

but still the same..

Can you show your map of a 'n by m' Matrix to a vector of length n*m ?

And then do regular matrix multipliction ( with appropriate size checks) ...

Then ... M1*M2 => M3

should map to ...

vm1*vm2 => vm3

for (int i=0;i<n;i++){
    for (int j=0;j<m;j++){
      a[i*m+j]=0;
      }

     }

That is not a map of M -> v ...

v is all set to zero there,

( but it shows the general idea,
if zero is replaced by M[i][j] )

Now show your code for ...

M1*M2 => M3

with row & column checking

and the appropriate size for M3

I showed my code,above..row is N and column is N..

are you trying to multiply each element of the matrix with a corresponding element in the vector? as in element 1 in the matrix * element 1 in the vector?

I am trying to multiply 2 2d arrays (just for this example the number of rows is 2(N) and number of columns is 1(R).

The A matrix is (NN) and X is (NR) , so the result is (N*R).

Normally,I would do :  result[i][j]=A[i][k]*X[k][j]

Ok ,it goes like:

 for (int i=0;i<rows;i++){
   for (int j=0;j<cols;j++){
     result[i*cols+j]=0;
     for (int k=0;k<rows;k++){
    result[i*cols+j]+=A[i*rows+k]*B[k*cols+j];

   }

   }
}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.