Share
Explore BrainMass

Reading and writing matrices in Java

My assignment is to test which algorithm is more efficient in transposing a matrix: a Naive or Fast Sparse algorithm. I need to construct functions for reach algorithm that call from an input file, which is a sparse Matrix.

A text file called M5x5.mat looks like this.

5 5 11
0 3 297
1 0 230
1 4 291
2 0 390
2 2 250
2 3 286
2 4 330
3 2 333
3 4 464
4 0 184
4 3 347

5 and 5 represent the 5x5 matrix and 11 the number of elements. M10x10 has 50 elements and so on. The matrice is set up <row, col, value>, with the first column being 'row', second column being 'col' and the third column being 'value'.

My main problem is that I don't know how to convert a text file like this into a matrice that I can use. I wasn't taught how to in my previous classes and I think my professor assumes that we know how.

I need to know how to print out the matrice as it appears on the text and a new transposed Matrice.

My primary assignment was to measure each algorithm in efficiency. I do this by adding units every time the for loop executes.

This is the Fast Transpose algorithm in pseudocode, using the units counter as mentioned:

start of algorithm/

for (i=0; i < M[0].row; i++)
rowterms[i]=0;
units++;

for (i=1; i<=M[0].value; i++)
rowterms[M[i].col]++;
units++;

startingposition[0]=1
for (i=1; i< M[0].row; i++)
startingposition[i] = startingposition[i-1] + rowterms[i-1]
units++;

/*primary transpose alg*/
for (i=1; i<= M[0].value; i++)
{

j=startingposition[M[i].col]++

/*Mt is the transposed matrice*/
Mt[j].row = M[i].col
Mt[j].col = M[i].row
Mt[j].value = M[i].value
units++;

/end of algorithm

That's just one of the algorithms.

Summing up what I need:

1. How to call the input matrice files and implement them in the functions. Or to convert the txt file into a matrice?
2. How to print out the matrices.
3. I would like to have the pseudocode above converted into a java function complemented with the calling of the Matrice file, but if that's too much, I understand.

Any help at all would be appreciated.

Thank you.

Solution Preview

This solution addresses the first and second issues listed in the posting. That is, it shows how to read in data from a file to create a matrix and it shows how to display a matrix. The entire Java program to do this is in the attached Matrix.java file.

In order to read the matrix data from a file we need to use a File object that represents the file. We create this object as follows:

<pre>
File file = new File(filename);
</pre>

Once we have a file object we can create a Scanner object to read all the data from the file. The ...

Solution Summary

This solution provides and explains a Java class for reading and writing a matrix of integers.

$2.19