MatlabのmファイルをC言語に自動変換する方法はあるのか?

このQ&Aのポイント
  • Matlabで作成したmファイルをC言語に自動変換することは可能でしょうか?大学の研究室で使っているmatlabの機能にC言語のソースを自動生成する機能があると先生に伺ったのですが、常識的に考えてそんな便利なことができるとは思えません。
  • Matlabのバージョンや使用しているツールボックスによって変換の可否が異なる場合があります。SimulinkやReal time workshopを使用したことがない場合は、具体的な方法や制約について調査する必要があります。
  • Real time workshopでは、Simulinkで生成したブロック線図をC言語に変換することができますが、mファイルからの変換はできません。mファイルをC言語に変換したい場合は、他の方法を検討する必要があります。
回答を見る
  • ベストアンサー

Matlabで作成したmファイルをC言語に自動変換することは可能ですか?

大学の研究室で使っているmatlabの機能にC言語のソースを自動生成 する機能があると先生に伺ったのですが、 常識的に考えてそんな便利なことができるとは思えません。 実際に下記に示すtoolboxで自分が作ったmファイルからC言語のソースを、ある程度自動生成することは可能でしょうか? Matlab 2008 b windows-x64版 Matlab 7.7 Simulink 7.2 Image processing toolbox Signal processing toolbox Real time workshop SimulinkとReal time workshopを一度も使ったことが無いので 少し調べて良く判らない点がありました。 Realtimeworkshopでは、Simulinkで生成したブロック線図のみC言語で出 力できるものであり、mファイルからの変換はできないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

RealTimeWorkshopはsimulinkをC言語にするものです。 mファイルをC言語に変換するのは、普通はできません。 数年前までは、Matcom というMatlab→C++の変換アプリであったのですが、会社ごとMathworks本体に買収されてMatlab Compilerという存在意義がよくわからないツールボックス(というかアプリ)になってしまいました。Matcomは昔はフリーでも入手できたのですが、今でも入手できるかどうかは不明です。探せばどっかにあるかも。 で、Mathworksの Matlab Compilerは、mファイルを、exeファイルに変換できます。できたexeを起動するのにMatlabは必要ありません。 ただし、いきなりexeになってしまうので、例えば、mファイルをPC上のmatlabで開発して、それをCに変換して、高速なワークステーション等で計算させたい、という一番よくあると思われる状況には対応できません。

neuralnet
質問者

お礼

専門的な分野で丁寧に回答していただきありがとうございます。 とある研究機関から、共同研究の成果として買っていただいた ものらしいのですが、なんの役に立つのかさっぱり分からず困 っていたところでした。少し残念ですが、がんばってC言語で シコシココードを書いていこうと思います。

関連するQ&A

  • C言語→MATLABへの変換で、困っています。

    学生研究でMATLABを使用しています。 光学測定系で画像を取り込み、それを解析する実験を行っています。 MATLABはプログラム内の値の変更や処理の追加できることから 大変助かっています。 そこで、もともとはC言語でやっていた3種類の処理を 一つのMファイルで行いたいと思い。 只今、C→MATLAB変換するプログラムの書き直しを行っています。 そのうち2種のプログラムは行列の計算がメインだったため何とか Mファイルに書き直すことができたのですが、 最後のひとつが難しい関数らしきものが多く、 MATLABに書き直すことができるプログラムなのかもわからない状態です。 そこで、 ・C→MATLAB変換可能なプログラムか? ・書き直すにあたってどこを部分を直せばよいのか? をアドバイスいただけないでしょうか? ↓MATLAB化したいC言語ファイル http://karispace.web.fc2.com/cmat2.c 一枚のbmp画像から4枚のdatデータを出力するプログラムです。 C言語とMATLABの三ヶ月前に勉強して、使用しており、基礎がわかる程度です。 よろしくお願いします。

  • Visual C++からMATLABを呼び出したい

    工学系の大学生の者です. 現在,Visual C++で作成したMFCアプリを使って実験機を制御し,その結果にあたるセンサの値を取得してcsvファイルを生成し,それをMATLAB(csvファイルをグラフ化するmファイルを呼び出し)でグラフ化しています. ただ,この手法だとアプリの実行でcsvファイルを生成したのち,MATLAB上でコマンドを打つ必要があり,少し手間がかかります. 私の理想としては,センサ測定値をcsvファイルに書き出したのち,自動でMATLABグラフ化したいと思っております. C#だとMATLABと連携がしやすいとか聞くのですが,VIsua C++ではMATLAB連携や上記のような自動化はできないのでしょうか? できる場合は,やり方や参考資料などを挙げていただけると幸いです. (たとえば,ライブラリやヘッダー,C++ソース側の記述など) ご回答,よろしくお願い致します.

  • MATLABのMATファイル をC言語で取り込む

    MATLAB の MATファイル をC言語でも取り込めるようにするにはどのようにすればよいのか教えてください。 (bin とか dat への変換方法がわかりません。) よろしくお願いします。

  • C言語で矩形波生成方法

    c言語で簡単に矩形波を生成する方法はありませんでしょうか? matlabではsquare()で簡単に作るのですが、これと同様な機能がある関数を作りたいと思っています。 お願い致します。

  • mファイルを開こうとしてもMatlabのエディタが起動しない.

    こんばんわ. 新しくインストールしたMatlabR2007aに関する質問です. 今まで使っていたパソコンでは,デフォルト設定でmファイルをダブルクリックするとmatlabが起動された後,エディターが自動で開いていました. しかし,新しくインストールしたパソコンではmファイルが最初から関連付けされておらず,Matlabを常に使用するプログラムとして指定しました. その結果,Matlabが起動するところまではいくのですが,自動ではエディタが起動しないという状態になっています. 今までのようにm-ファイルをダブルクリックすればMatlabとリンクの取れた状態のエディタが起動するように設定しなおしたいのですが,ご存知の方はいらっしゃるでしょうか? 教えてください.

  • MATLABでssを実行すると、未定義な関数としてエラーになる。

    MATLABでssを実行すると、ssが未定義な関数として認識されて エラーになっているようです。 どなたか、対処方法をご存じでしょうか? 宜しくお願いいたします。 ■実行環境 OS:WindowsXP SP2 MATLAB:2007a ■実行したM-ファイル %test l=0.2404; M=0.390; J=0.0712; c=0.695; g=9.81; A=[0 1; -M*l*g/J -c/J]; B=[0; 1/J]; C=[1 0]; D=0; sys = ss(A,B,C,D); ■実行結果 ??? 未定義の関数、またはメソッド 'ss' (タイプ'double' の入力引数)。 エラー ==> test at 13 sys = ss(A,B,C,D); ■調べた事項 >> ver ------------------------------------------------------------------------------------- MATLAB Version 7.4.0.287 (R2007a) MATLAB License Number: XXXXXX Operating System: Microsoft Windows XP Version 5.1 (Build 2600: Service Pack 2) Java VM Version: Java 1.5.0_07 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode ------------------------------------------------------------------------------------- MATLAB Version 7.4 (R2007a) Simulink Version 6.6.1 (R2007a+) Communications Blockset Version 3.5 (R2007a) Communications Toolbox Version 3.5 (R2007a) Filter Design HDL Coder Version 2.0 (R2007a) Filter Design Toolbox Version 4.1 (R2007a) Fixed-Point Toolbox Version 2.0 (R2007a) Link for ModelSim Version 2.2 (R2007a) Signal Processing Blockset Version 6.5 (R2007a) Signal Processing Toolbox Version 6.7 (R2007a) Simulink Fixed Point Version 5.4.1 (R2007a+) Trademarks ------------------ MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, and xPC TargetBox are registered trademarks and SimBiology, SimEvents, and SimHydraulics are trademarks of The MathWorks, Inc. Other product or brand names are trademarks or registered trademarks of their respective holders. >> which ss -all C:\Program Files\MATLAB\R2007a\toolbox\signal\signal\@dfilt\ss.m % dfilt method >> matlabroot ans = C:\Program Files\MATLAB\R2007a >> path MATLABPATH C:\Program Files\MATLAB\R2007a\toolbox\matlab\general C:\Program Files\MATLAB\R2007a\toolbox\matlab\ops (中略) C:\Program Files\MATLAB\R2007a\toolbox\signal\signal (後略) >>

  • matlabでc-MEXにmファイルを内蔵する方法

    c-MEXにmファイルを内蔵する方法を教えてください。 パソコンでc-MEX内に作製したMファイルを入れるとエラーを起こしmatlabが強制終了してしまいますがこれを回避する方法を知っていましたら教えてください。

  • MATLABを用いたUDP通信のプログラム作成

    MATLABを用いたUDP通信のプログラム作成のことで教えてください。 Windows10のパソコンのキーボードから文字列を入力し、 UDP通信で文字列を渡し、この値をパソコンの画面上に表示させる MATLABプログラム(Simulinkは使 用しない)を書こうとしています。 ・どのように書けばよいか教えてください。 ・また、この場合、ホストアドレス(127.0.0.1 ?)やポート番号をどのように設定すればよいでしょうか? ・さらに、このMATLABプログラムをC言語に変換してテストしたいです(MATLAB Coderを使用) 通信分野については、ほとんど知りません。 宜しくお願い致します。

  • C言語のファイル操作

    すいません、C言語の初心者です。 C言語のファイル操作において、ファイルから読み込んで、読み込んだ分だけその情報を消していくというのは可能ですか?可能であればサンプルソースのあるURLもしくはソースそのものを教えて下さい。

  • C言語の質問

    Fortran言語にはsign(x,y)の関数があります、つまりxの絶対値をもち、かつyの符号をもつ値を生成する関数です。 C言語にこのような関数をも使いたいのですが、調べてみるとcopysignという関数がありました、関数の機能説明もFortaranのsignと同じとなっています。しかしながら、実際にCのソースファイルにcopysignを使うと、ビルド時に、「error C3861: 'copysign': 識別子が見つかりませんでした」のエラーが出てきました。また宣言時に「#include <math.h>も入れています。  どちら様がご存知ならば教えていただければ幸いなことです。  宜しくお願い致します!<^ ^>!!!