2016-05-05 8 views
1

MatlabのCコーダーを使いたいです。これは、mコードをCコードに変換します。 私は5つの数字を追加する単純な関数を使用します。 コードが生成されると、多くのCおよびHファイルがあります。 もちろん、必要なコードを選択してコード内にインポートすることもできますが、これはこの練習のポイントではありません。これは、MATLABコードが難しくなるときにはこれ以上できなくなります。matlabから生成されたコードの使い方

Matlabはmain.cファイルと.mkファイルを配信します。

/* Include Files */ 
#include "rt_nonfinite.h" 
#include "som.h" 
#include "main.h" 
#include "som_terminate.h" 
#include "som_initialize.h" 

//Declare all the functions 

int main(int argc, const char * const argv[]){ 
(void)argc; 
(void)argv; 

float x1=10; 
float x2=20; 
float x3=30; 
float x4=40; 
float x5=50; 
float result; 

/* Initialize the application. 
You do not need to do this more than one time. */ 
som_initialize(); 


main_som(); 

result=som(x1,x2,x3,x4,x5); 
printf("%f", result); 

som_terminate(); 
return 0; 

}

私は

gcc -o test1 main.c 

とラズベリーパイでこれを実行すると、それは私のすべての機能に未定義の参照を与える...何が悪かったのか 任意のアイデア?

+1

を何あなたの意図は?コードをPyにビルドして実行するか、PC上でコードをビルド(クロスコンパイル)してから、Pyで実行しますか? –

+0

はい。私はADCから値を読み取り、MATLABで生成されたCコードを使ってこのデータをfftしたいと思っています。しかし、私はワークフローを理解するための簡単な例から始めたいと思います – wietjes

+0

コードはPC上で生成され、RPIでコンパイルされます – wietjes

答えて

1

あなたが生成されたメイクファイル(MKファイル)とそれを構築する必要がありますので、それが正しいMatlabのライブラリにリンク - それらの機能が定義されていることがあります:

$ make -f test.mk 
+0

これは私にこのエラーを返します: 'som_rtw.mk:264:***ターゲットパターンに'% 'が含まれていません。やめる。' mkファイルの264行目をチェックすると、%.obj:$(MATLAB_ROOT)/ rtw/c/src /%となります。 – wietjes

+1

Windowsの下でCコードを生成しましたが、mkとcファイルをRaspberryに転送しただけですか?そうであれば、一般的なMATLABインタフェースファイルがないのでコンパイルすることは明らかに不可能です(上の行で$(MATLAB_ROOT)/ rtw/c/src /内のファイルを検索しようとします) – tim

+0

コードが生成されたシステム以外のシステムにある場合は、すべてのファイルをコピーする必要があります。ただし、コンパイルしているプラ​​ットフォーム用のMATLABライブラリが必要です。 http://www-rohan.sdsu.edu/doc/matlab/toolbox/compiler/ch05ge19.htmlを参照してください。特に、スタンドアロンアプリケーションでは、コンパイラが生成するコードが格納されているプラ​​ットフォームごとにMATLAB C/C++数学ライブラリを購入する必要があります実行されます。 – ThomasH

0

あなたはまた、他のCファイルをコンパイルする必要がありますmain.cと一緒に生成されたコードは、別のディレクトリにある場合は

gcc -o test1 *.c 

は、その後、あなたが何かを行うことができます:main.cが生成されたコードと同じディレクトリにある場合は、あなただけ行うことができるはず

gcc -o test1 /path/to/code/*.c -I/path/to/code main.c 
関連する問題