Ajattelin kysyä täältä apua, jos joku olisi törmännyt tällaiseen ongelmaan ja tietää vastauksen. Ongelma on se, että pitäisi saada luettua c kielellä MAT-tyyppinen tiedosto joka on Matlabin oma muuttujien tallennukseen käytettävä tiedosto. Matlab tarjoaa näiden tietojen avaamiseen c-kielellä omat c-kieliset koodit ja kirjastofunktiot, joita en ole kuitenkaan onnistunut käyttämään tämän ongelman takia. Tiedosto pitäisi saada luettua, jotta saisin käytettyä lukuarvoja laskentaan.
Ohjelma jota käytän on Code Composer Studio 3.1 ja tämä käyttää laskentaan C67x prosessoria. Jotta MAT-tiedostoja voidaan lukea, pitää tuo "mat.h" tiedosto liittää koodiin ja sen lisäksi kolme *.dll tiedostoa. Koodi on tämän näköinen:
#include <stdio.h> #include <stdlib.h> #include "mat.h" void main(int argc, char **argv) { MATFile *pmat; const char* name=NULL; mxArray *pa; /* open mat file and read it's content */ pmat = matOpen("signaalit.mat", "r"); if (pmat == NULL) { printf("Error Opening File: \"%s\"\n", argv[1]); return; } /* Read in each array. */ pa = matGetNextVariable(pmat, &name); while (pa!=NULL) { /* * Diagnose array pa */ printf("\nArray %s has %d dimensions.", name, mxGetNumberOfDimensions(pa)); //get next variable pa = matGetNextVariable(pmat,&name); //destroy allocated matrix mxDestroyArray(pa); } matClose(pmat); }
ja tällaisen virheen sitten saan. Olen sen verran aloittelija koodaamisessa, että kaipaan apua tähän ikävään ongelmaan.
[pääohjelma.c] "C:\CCStudio_v3.1\C6000\cgtools\bin\cl6x" -g -fr"C:/Documents and Settings/student/Desktop/CCS/testi/Debug" -d"_DEBUG" -mv6700 -@"Jarkko_testi/Debug.lkf" "pääohjelma.c"
[Linking...] "C:\CCStudio_v3.1\C6000\cgtools\bin\cl6x" -@"Debug.lkf"
<Linking>
undefined first referenced
symbol in file
--------- ----------------
_matOpen C:\Documents and Settings\student\Desktop\CCS\testi\Debug\
_mxGetNumberOfDimensions C:\Documents and Settings\student\Desktop\CCS\testi\Debug\
_matGetNextVariable C:\Documents and Settings\student\Desktop\CCS\testi\Debug\
_matClose C:\Documents and Settings\student\Desktop\CCS\testi\Debug\
_mxDestroyArray C:\Documents and Settings\student\Desktop\CCS\testi\Debug\
>> error: symbol referencing errors - './Debug/testi.out' not built
>> Compilation failure
Build Complete,
2 Errors, 0 Warnings, 0 Remarks.
(Mod. Edit. Kooditagit ja otsikon yhdyssanavirhe kuntoon.)
Pitäisikö tuohon linkata vielä mukaan joku staattinen library (.lib)?
MAT-file tiedostolle on olemassa omat ohjelmakohtaiset staattiset libraryt, mutta CCS 3.1 ohjelmalle niitä ei ole. Ilmeisesti en saa tätä näin toimimaan, vaan minun pitää matlabillä tehdä tiedostosta esim. tekstitiedosto jonne luvut tallennetaan binäärisenä. Kunhan vain saisin ne tallennettua siten, että CCS lukee ne oikein.
Aihe on jo aika vanha, joten et voi enää vastata siihen.