September 26, 2015
How to populate Matrix from a text file
AmiBroker 6.00 has introduced support for matrices. After we create a matrics with Matrix function call:
my_var_name = Matrix( rows, cols, initvalue)then in order to access matrix elements, we need to use:x = my_var_name[ row ][ col ]
However – if we want to populate a relatively large matrix with values generated in other programs, then it may not be very practical to do it by hand in the AFL code assigning individual elements like this:
A[ 0 ][ 0 ] = 1; A[ 0 ][ 1 ] = 4; A[ 0 ][ 2 ] = 6What we can do in such case is to store the values in a text file that we could use as input, then read through the file using fgets function and populate Matrix elements using a looping code. A sample formula showing how to perform such task is presented below.
A sample text file for this example can be found here: http://www.amibroker.com/kb/wp-content/uploads/2015/10/samplematrix.txt
// the input file path
file = "C:\\samplematrix.txt";
// define the size of the desired matrix
rows = 16;
cols = 16;
// create matrix
myMatrix = Matrix( rows, cols, 0 );
// open file
fh = fopen( file, "r" );
if( fh )
{
    i = 0;
    // iterate through the lines of input file
    for( i = 0; ! feof( fh ) AND i < rows; i++ ) 
    {
        // read a line of text
        line = fgets( fh ); 
        if( line == "" )
        {
            Error("Too few rows in the data file or an empty row found");
            break;
        }
    
        // iterate through the elements of the line
        for( j = 0; ( item = StrExtract( line, j ) ) != "" AND j < cols; j++ ) 
        {
            // assign matrix element
            myMatrix[ i ][ j ] = StrToNum( item );
        }
        
        if( j < cols )
        {
            Error("Too few columns in data file");
            break;
        }
    }
    
    fclose( fh );
}
else
{
    Error( "ERROR: file can not be opened" );
}
// spot check selected element
Title = "spot check M[ 2 ][ 3 ]: " + NumToStr( MyMatrix[ 2 ][ 3 ] )
				
					
 
					Filed by Tomasz Janeczko at 5:44 am under AFL
					Comments Off on How to populate Matrix from a text file