プログラミングで行列演算ライブラリを使いたいのですが、開発環境が特殊でMATLABのs-functionというのを使っているため、Windows環境の行列演算ライブラリを探しております。
開発環境が特殊なためCygwinとかも使えません。今のところCLAPACK、CPPLAPACK、BOOSTを使っていますが他に使えそうなライブラリはないでしょうか?使えそうなライブラリはいつもlinuxなんです。 TwT
またlinuxなどのUNIX系OSでコンパイルされた拡張子.aのライブラリファイルはWindowsではやはり使えないんでしょうか?
よろしくお願いします.
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは.
なかなか他の回答がつきませんね…
SuperLUは何とか Windows で利用しようという向きもあるようですよ.
Octave という数値計算ソフトウェアのアドオンである Octave Forge というプロジェクトで扱いがあるようです.
世の中のオープンソースのライブラリが Windows で単純に使えないのは,
ほとんどが自動的なソースコードのコンパイル機能の問題です (make というコマンドです).
Visual C++ にも「一応は」 nmake というものがありますが,
UNIX 系 OS の make と微妙に違った文法で覚えるのがいちいち面倒です.
フリーウェアで研究する UNIX 利用者が Windows を相手にしたくない理由の一つです.
さて,何とか Windows で UNIX の make を使いたい場合は Cygwin です.
ただし,ここで作った .a ファイルは一寸した工夫をすると Cygwin の外で利用できます.
Cygwin のバイナリは UNIX 環境を Windows に作るための cygwin1.dll というファイルに依存しています.
これが Cygwin がないと利用できない,と言われる原因です.
折角 Windows を使うわけですから,余計な外部依存は無い方が良いです.
この開発方針を採用する MinGW というプロジェクトがあり,
これは Windows 上で単体で利用可能なバイナリを作ってくれます.
この MinGW は Cygwin と同時にインストールできます.
Cygwin で gcc に -mno-cygwin オプションをつけると MinGW が利用されます.
こうしてできた .a ファイルの実体は Visual C++ の スタティックライブラリである .lib ファイルとほとんど同じですから,
その利用法も比較的簡単です.
さらに,ここに MinGW の dllwrap というコマンドを使い DLL を作ります.
このときについでにシンボル名の抽出を行いモジュール定義ファイル(.def)を作っておきます.
この .dll ファイルと .def ファイルを Visual C++ の lib コマンドで処理すると,
Visual C++ から利用可能なインポートライブラリ(.lib)を作ることができます.
後はこの .dll 本体と インポートライブラリ (.lib),
ライブラリのヘッダファイル等を Visual C++ のプロジェクトに登録するだけです.
Linux のシステムコールなど余程特殊な機能を使っていない限り,
大抵のライブラリは上記の方法で利用可能になるものと思われます.
ただし,非常に手間がかかりますが…
No.1
- 回答日時:
行列演算ライブラリなら,それこそ MATLAB のライブラリを叩けば良いでしょう.
何故わざわざ他のライブラリを利用しようとするのでしょうか.
特に CLAPACK を利用するというのが意味不明です.
MATLAB の行列演算部分は LAPACK ですし,
BLAS は最近のバージョンで Windows なら intel の MKL 由来でしょうか.
C-MEX から利用できますよね(参考 URL).
さて,
> またlinuxなどのUNIX系OSでコンパイルされた拡張子.aのライブラリファイルはWindowsではやはり使えないんでしょうか?
についてですが,それは「無理」です.
ただし, cygwin でコンパイルしたライブラリファイルを,
cygwin の 外で使う方法はあります.
DLL を作って cygwin 環境無しに Visual C++ から使うこともできますよ (64bit だと分かりませんが).
…ところで,「使えそうなライブラリはいつもlinuxなんです」とのことですが,
暇と根気さえあれば何とかなってしまうように思うのですが.
企業秘密に抵触するとかでなければ,一寸した興味があるので,
どんなライブラリを使おうとしたのかについてお聞きかせください.
参考URL:http://www.mathworks.com/access/helpdesk_archive …
この回答への補足
>>行列演算ライブラリなら,それこそ MATLAB のライブラリを叩けば良いでしょう.
>>何故わざわざ他のライブラリを利用しようとするのでしょうか.
>という部分ですが、MATLABのライブラリはm-fileで書かれてますよね?
>s-functionだとMATLABの関数よりもCで書かれた関数の方がどうしても処理が早いので使ってないんです。
という部分は僕の勘違いでした。LAPACKをMATLABで呼び出すことができるなんて初めて知りました!ありがとうございます!
丁寧な解答ありがとうございます。
>行列演算ライブラリなら,それこそ MATLAB のライブラリを叩けば良いでしょう.
>何故わざわざ他のライブラリを利用しようとするのでしょうか.
という部分ですが、MATLABのライブラリはm-fileで書かれてますよね?
s-functionだとMATLABの関数よりもCで書かれた関数の方がどうしても処理が早いので使ってないんです。
>ただし, cygwin でコンパイルしたライブラリファイルを,
>cygwin の 外で使う方法はあります.
>DLL を作って cygwin 環境無しに Visual C++ から使うこともできますよ
これははじめて知りました!すばらしい情報ありがとうございます!
最後にlinuxのライブラリですが、僕はスパース行列を演算できるライブラリなどを探しているんですが、KLUとかsuperLU,Pardisoなどです。これらのライブラリはすべてlinuxで使うか、matlab内でm-fileとして呼び出す
ということがデフォルトでできるようになっています。
ただどうしても、行列演算の処理が早いプログラムを組みたい。
しかし、環境はwindowsのMATLABのS-funから呼び出さなければならない。
なので、windowsで使えそうなライブラリを探していました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iPhone(アイフォーン) 「ライブラリ」ってどこの事ですか? ※ 英語の勉強のために Amazon で買物をしたいのですが、「 2 2023/07/14 22:04
- デスクトップパソコン Macのインストールについて 3 2023/05/23 15:02
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- ノートパソコン パソコンのiTunesライブラリにエクスプローラーにある曲を引っ張って来てリンクさせたいのですが、エ 1 2023/04/06 07:49
- UNIX・Linux UNIX manページとか見る頻度高いの? 特にCLIばかり使っている人のなかで というかCLIとか 3 2023/05/22 17:06
- フリーソフト テキストエディア oedit の環境設定(初期設定)ファイルはどこ? 1 2022/11/18 15:40
- C言語・C++・C# ペーパーマリオみたいにドット絵でない2Dのイラストを作ったりするには何のソフトを使えばいいでしょうか 2 2023/05/29 11:28
- その他(プログラミング・Web制作) Pythonのライブラリをダウンロード済みかどうか簡単にチェックできますか? 3 2023/06/24 10:48
- その他(OS) Ubuntuに仮想環境いれて古いwindows動かしたいんですが、OSイメージ無料で手に入りますか? 2 2023/03/09 23:49
- ルーター・ネットワーク機器 通信量や通信量による影響を計算し想定できますか 3 2023/01/13 09:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows Media Playerを開くと...
-
Ps+のフリープレイでDestiny2の...
-
scipy っていうのをいれようと...
-
LIBCMT.LIBをリンクしてコンパ...
-
本格的なGUIを作るのにおすすめ...
-
静的ライブラリから静的ライブ...
-
boostのアンインストールについて
-
Google ColaboでGUI作成
-
VS2010でC#のDLLを作成する手順
-
Cでmd5を使うには
-
SSE命令やUSBドライバ作成ってC...
-
Dreamweaverのライブラリが反映...
-
VB.net でtwitter につながるソ...
-
マイコンSHでSQRT(平方根)が...
-
DLL読み込み時エラー
-
Javaでaacを操作するライブラリ
-
gcc に mktemp 危険と怒られ...
-
stricmp
-
DXライブラリで作成したゲーム
-
ipadでPDFが見れない!同期でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ps+のフリープレイでDestiny2の...
-
Windows Media Playerを開くと...
-
本格的なGUIを作るのにおすすめ...
-
Google ColaboでGUI作成
-
python urlopen error について...
-
scipy っていうのをいれようと...
-
強化学習の環境作成、AI。自動...
-
C言語について。
-
マウスのクリックを自動で
-
LIBCMT.LIBをリンクしてコンパ...
-
Dreamweaverのライブラリが反映...
-
【iTunes】CDをiPhoneに取り込...
-
shaderを書かないで、GPUレンダ...
-
declaration of 'index' shadow...
-
MFC/C++ sprintf の代わりに <<
-
ライブラリ作成時のグローバル...
-
静的ライブラリから静的ライブ...
-
boostのアンインストールについて
-
統計解析ソフト「R」と「SA...
-
c言語でntpdateコマンドにあた...
おすすめ情報