επιστημη(@episteme) の回答履歴
![](https://gazo.okwave.jp/okwave/images/contents/av_nophoto_100_6.gif)
- フーリエ変換やFFTのプログラム
C言語で書かれているFFTやフーリエ変換のプログラムのあるお勧めのサイトがあればおしえていただけないでしょうか? よろしくお願いいたします。
- MISTのLAPACKの環境設定ができない
こんにちは.質問させていただきます. 画像の主成分分析を行いたいと思っており,調べたところMISTというライブラリを用いれば用意にできるそうなので,早速使ってみました. しかし行列演算を行うためのLAPACKというものがうまく環境設定できていないようで,大量のエラーが出て困っています. 手順は下のURLのpdfに従い行っておりました. http://mist.suenaga.cse.nagoya-u.ac.jp/pdf/MIST_no_susume.pdf 環境設定もこのpdfの19ページに従い行いました. 上記のpdfのとおりにサンプルプログラムを順番に動かしてみたら,画像の入出力などは正常にできました. が,17ページのサンプルプログラムを実行しようとすると,以下のようなエラーが大量に出てしまいます. ===================================================== 1>MSVCRT.lib(ftol2.obj) : error LNK2005: __ftol2 は既に libF77.lib(ftol2.obj) で定義されています。 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e は既に MSVCRT.lib(MSVCR100.dll) で定義されています。 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRT.lib(MSVCR100.dll) で定義されています。 (中略) 1>LIBCMT.lib(errmode.obj) : error LNK2005: ___set_app_type は既に MSVCRT.lib(MSVCR100.dll) で定義されています。 1>LINK : warning LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>C:\Documents and Settings\(ユーザ名)\My Documents\Visual Studio 2010\Projects\test\Debug\test2.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 ===================================================== 使用環境はWindows XP,Visual Studio2010です. プログラミングは初心者です. .NETというものがよくわからないので,Visual Studioを使っているのですが,これが問題でしょうか?Visual Studioではできないのでしょうか?(画像の入出力などは正常に処理できたので,LAPACKの設定がうまくできていないだけだと自分では思っているのですが・・・) どなたか詳しい方がいらっしゃいましたら,教えてください. よろしくお願いいたします.
- プログラムの間違いについて
以下のプログラムはカレントディレクトリ内のCSVファイルの一覧を取得するプログラムを書いています。main関数内のprintfでファイル一覧を表記させたいと考えています。 カレントディレクトリに4つのCSVファイルあったとします。 1.csv 2.csv 3.csv 4.csvとします。 foo関数で a[0]=1.csv a[1]=2.csv a[2]=3.csv a[3]=4.csvと格納されたとします。 ですが、main関数内のprintfでは a[0]=4.csv a[1]=4.csv a[2]=4.csv a[3]=4.csv として表記されてしまいます。 main関数内で a[0]=1.csv a[1]=2.csv a[2]=3.csv a[3]=4.csv として表記するにはどうしたらいいのでしょうか? また、foo関数内でのprintfを行わないとmain関数内での表記が添付画像のように文字化けしますこの理由はなぜでしょうか? もしわかるかたがいましたら教えていただけないでしょうか? よろしくお願いします。 ここから記述したプログラムです。デバックすれば動きます。 #include <stdio.h> #include <windows.h> #include <string> #include<conio.h> using namespace std; char *a[10]; long n; void foo( int cnt, const string dirname ) { WIN32_FIND_DATA fd; HANDLE h; // ハンドルを取得する h = FindFirstFileEx( ( dirname + "*.csv" ).c_str(), FindExInfoStandard, &fd, FindExSearchNameMatch, NULL, 0 ); if ( INVALID_HANDLE_VALUE == h ) { printf( "ディレクトリ %s でエラー\n", dirname.c_str() ); return ; } n=0; do { printf( "%s\n", fd.cFileName ); a[n]=fd.cFileName; //printf("%s\n", a[n]); n=n+1; // 次のファイルを検索する } while ( FindNextFile( h, &fd ) ); // ハンドルを閉じる FindClose( h ); } int main() { foo( 0, ".\\" ); for(n=0; n<4; n++) { printf("%s\n", a[1]); } getch(); return 0; }
- ベストアンサー
- C・C++・C#
- saterain20
- 回答数7
- MISTのLAPACKの環境設定ができない
こんにちは.質問させていただきます. 画像の主成分分析を行いたいと思っており,調べたところMISTというライブラリを用いれば用意にできるそうなので,早速使ってみました. しかし行列演算を行うためのLAPACKというものがうまく環境設定できていないようで,大量のエラーが出て困っています. 手順は下のURLのpdfに従い行っておりました. http://mist.suenaga.cse.nagoya-u.ac.jp/pdf/MIST_no_susume.pdf 環境設定もこのpdfの19ページに従い行いました. 上記のpdfのとおりにサンプルプログラムを順番に動かしてみたら,画像の入出力などは正常にできました. が,17ページのサンプルプログラムを実行しようとすると,以下のようなエラーが大量に出てしまいます. ===================================================== 1>MSVCRT.lib(ftol2.obj) : error LNK2005: __ftol2 は既に libF77.lib(ftol2.obj) で定義されています。 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e は既に MSVCRT.lib(MSVCR100.dll) で定義されています。 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRT.lib(MSVCR100.dll) で定義されています。 (中略) 1>LIBCMT.lib(errmode.obj) : error LNK2005: ___set_app_type は既に MSVCRT.lib(MSVCR100.dll) で定義されています。 1>LINK : warning LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>C:\Documents and Settings\(ユーザ名)\My Documents\Visual Studio 2010\Projects\test\Debug\test2.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 ===================================================== 使用環境はWindows XP,Visual Studio2010です. プログラミングは初心者です. .NETというものがよくわからないので,Visual Studioを使っているのですが,これが問題でしょうか?Visual Studioではできないのでしょうか?(画像の入出力などは正常に処理できたので,LAPACKの設定がうまくできていないだけだと自分では思っているのですが・・・) どなたか詳しい方がいらっしゃいましたら,教えてください. よろしくお願いいたします.
- プログラムの間違いについて
以下のプログラムはカレントディレクトリ内のCSVファイルの一覧を取得するプログラムを書いています。main関数内のprintfでファイル一覧を表記させたいと考えています。 カレントディレクトリに4つのCSVファイルあったとします。 1.csv 2.csv 3.csv 4.csvとします。 foo関数で a[0]=1.csv a[1]=2.csv a[2]=3.csv a[3]=4.csvと格納されたとします。 ですが、main関数内のprintfでは a[0]=4.csv a[1]=4.csv a[2]=4.csv a[3]=4.csv として表記されてしまいます。 main関数内で a[0]=1.csv a[1]=2.csv a[2]=3.csv a[3]=4.csv として表記するにはどうしたらいいのでしょうか? また、foo関数内でのprintfを行わないとmain関数内での表記が添付画像のように文字化けしますこの理由はなぜでしょうか? もしわかるかたがいましたら教えていただけないでしょうか? よろしくお願いします。 ここから記述したプログラムです。デバックすれば動きます。 #include <stdio.h> #include <windows.h> #include <string> #include<conio.h> using namespace std; char *a[10]; long n; void foo( int cnt, const string dirname ) { WIN32_FIND_DATA fd; HANDLE h; // ハンドルを取得する h = FindFirstFileEx( ( dirname + "*.csv" ).c_str(), FindExInfoStandard, &fd, FindExSearchNameMatch, NULL, 0 ); if ( INVALID_HANDLE_VALUE == h ) { printf( "ディレクトリ %s でエラー\n", dirname.c_str() ); return ; } n=0; do { printf( "%s\n", fd.cFileName ); a[n]=fd.cFileName; //printf("%s\n", a[n]); n=n+1; // 次のファイルを検索する } while ( FindNextFile( h, &fd ) ); // ハンドルを閉じる FindClose( h ); } int main() { foo( 0, ".\\" ); for(n=0; n<4; n++) { printf("%s\n", a[1]); } getch(); return 0; }
- ベストアンサー
- C・C++・C#
- saterain20
- 回答数7
- バイナリデータからの値の取得について教えてください
今、バイナリデータから値を取りだそうとがんばっています。 しかし、うまくいかずに困っています。 困っていることは2点あります。 (1)バイナリデータにはリトルエンディアンで格納していると書いています。 まず、リトルエンディアンで書かれている場合、どのような処理を考えることが必要なのでしょうか? (2)バイナリデータには、 はじめに文字列(char)型4バイトで「RIFF]という値 次に32ビット符号なし整数で4バイトの数字、 次に4052バイトの構造体 などと収納されているようです。 このように入っているデータから値を取得するにはどのようにしたらよいのでしょうか? 全然できなくて困っています。 教えていただけないでしょうか? よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- saterain20
- 回答数5
- バイナリデータからの値の取得について教えてください
今、バイナリデータから値を取りだそうとがんばっています。 しかし、うまくいかずに困っています。 困っていることは2点あります。 (1)バイナリデータにはリトルエンディアンで格納していると書いています。 まず、リトルエンディアンで書かれている場合、どのような処理を考えることが必要なのでしょうか? (2)バイナリデータには、 はじめに文字列(char)型4バイトで「RIFF]という値 次に32ビット符号なし整数で4バイトの数字、 次に4052バイトの構造体 などと収納されているようです。 このように入っているデータから値を取得するにはどのようにしたらよいのでしょうか? 全然できなくて困っています。 教えていただけないでしょうか? よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- saterain20
- 回答数5
- プロジェクトのオーバーロードの方法が分からない
VC++/MFCにおいて、(1)のプロジェクトで(2)のプロジェクトにある関数を呼び出すには、 どういった設定が必要なのでしょうか? 環境はVC2008になります。 以下イメージ図 (1)┬ test.h │└ test.cpp (2)のプロジェクトにある関数を呼び出し (error LNK2001が発生する) │ (2)┬ sample.h (1)とは別のプロジェクト └ sample.cpp ここで基本的な処理を行っている。
- 文字列を配列として扱う方法について
文字列を配列に格納したいのですが、うまくいかずに困っています。 例えば、 a[1]=1番目のファイル.csv; a[2]=2番目のふく; a[3]=凄く長い名前.csv; としたいと考えています。 どのようにすればいいのでしょうか? 数字を配列に格納することはできます。
- ベストアンサー
- C・C++・C#
- saterain20
- 回答数4
- ファイル属性の変更方法???
Vista、7でProgram File内にあるデータファイルを更新します 通常のままではエラーになりますので、ファイル属性をフルコントロールに変更したいのです //パスを定数で定義する const string FILE_PATH = @"C:\Program File\MyProgramHolder\Data.txt"; //ファイルの属性を取得する System.IO.FileAttributes uAttribute = System.IO.File.GetAttributes(FILE_PATH); //フルコントロール属性を指定する System.IO.File.SetAttributes(FILE_PATH, uAttribute | System.IO.FileAttributes.XXXXXXX); ところがXXXXXXに指定すべきAttribute値の指定方法が分かりません ぜひご指導お願い致します 追伸】手操作でData.txtのプロパティを変更する方法は理解していますが、日本各地にインストールするので手操作は無理なのです そのためプログラムで属性変更したいのですが、手操作以外の方法はありますか? 例えばインストーラの指定でファイル属性を変更するとか・・・・・・?
- 逆三角関数への変換
range = 75 , 225 , 375 … az = 0.615 , 1.845 , 3.03 … range[j]に中心からの距離、az[i]に方位角(角度)が入っています。 つまり極座標のrとθです。 これを次のようにx,y座標に変換しました。 for(i=0;i<300;i++){ for(j=0;j<534;j++){ x[k] = range[j] * cos(az[i]*PI/180.0); y[k] = range[j] * sin(az[i]*PI/180.0); k++; } } このx,yをy=xに沿って折り返したもの、つまり逆三角関数に変換したいのですが、どうすればよろしいでしょうか。 よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- sasmostmilk
- 回答数2
- STLをマルチスレッドで使いたい
STL(のようなもの)をマルチスレッドで使いたいと考えています。 STL自体はスレッドセーフじゃないとのことですが、 変わりのライブラリとか無いのでしょうか? こんなの使ったよとか、こういうやり方したよとか、あれば教えてください。 言語:C++ 環境は何でもいいです。
- 宣言の構文エラーが4行目に出ました。
C言語でプログラミングを行っているのですが、下のプログラミングでエラーが出て困っています。宣言の構文エラーがE4で起こっているらしいのですが、どこを訂正すればよいでしょうか?よろしくお願いします。 #include<stdio.h> main { double a,b; printf("長さ(センチメートルで入力して下さい):"); scanf("%lf",&a); b=(double)a/2.54; printf("%3.2f(cm)は%4.3f(inch)です。",a,b); }
- 締切済み
- C・C++・C#
- noname#130986
- 回答数1
- C#で簡単なノベルゲームを作りたい
大学でプログラムを勉強しなければならない知り、友人に何から始めればいいか尋ねたところ「C#がいい」と言われたので、こないだC#の本を買って条件分岐やら配列やらの存在を知ったばかりの超初心者です。 画像や文字の表示組み合わせてノベルゲームみたいなものを作って練習しようと思ったのですが文字の表示がメッセージボックスだと画面の真ん中にしか表示されなかったり、押すたびに音が出たりでうっとうしく感じます。 そこでラベルに書かれた文字を、ボタンをクリックすることで切り替えて物語を進行させようと思ったのですがどうすればいいかよくわかりません。(ラベルに値を代入?する感じで) どうせまだ立派なものは作れないので、単純なプログラムでいいので教えてください。 またおすすめのサイトがあったら教えて欲しいです。
- 締切済み
- C・C++・C#
- BibinbaBomber
- 回答数1
- 継承を重ねた場合のコストはどうなるのでしょうか?
仮想関数を使った方がはるかに楽になる場合で、意味的にもまさに継承がベストという場合を除いては継承は使わない、使う場合も、なるべく1回で、かつ一つで十分になるような方法を考える方針できたのですが 今までは手持ちの情報的に問題ないだろうとおもっていたのですが、ある新事実が発覚したため 一回の継承では別々の親クラスとして作ることとなり、あとで同じ基底クラスのポインタとして扱えないタイミングが生じて面倒が出るか、あるいはそれ以外で一つにまとめようとするとどの方法をとっても非常に大きなコードの無駄が生じることになり コスト的に問題なく出来るなら二段に継承したいという状況が発生しました。 現在1段の継承をしている状態で、基底クラスは別々に二つあり、どちらも抽象クラスで、もしこれらのさらに親クラスを同じものとして作るような形に変更した場合、二段階に継承するといっても、どちらにしてもその時に最終的に完成する、3段目の孫クラスで始めて実体を作れる(コンストラクタを呼べる)ようになる つまり、そうなっても親と子は抽象クラスという状態になります。 真ん中のクラスで、一番上のクラスの純粋仮想関数をoverrideする関数もいくらかは出てくるかもしれませんが、定義せずに残す事が確実に決まっている関数も既に存在しますし、逆に真ん中のクラスで増える純粋仮想関数も存在する見込みです。 こういった状況で、問題と考えられるのはただ一つ、コストに関して、なのですが 全ての仮想関数は、オーバーライド回数は親・子・孫間で必ず1回に限定されるようにプログラムする場合 1. 結局それに関しては一回分の継承とまったく同じコストになると考えて良いでしょうか? つまり仮想関数が、だいたいは関数ポインタのような原理で動いているとすれば、テーブルの要素(?)が増えた場合にコストが変わる、とか、継承回数が変わると一番上で宣言した純粋仮想関数を、真ん中でまったくoverrideせずに孫クラスでoverrideした場合、一段階しか継承せずに(単純に親クラスで宣言したのを子クラスでoverride)した場合とは実はコストが変わるとか そういう事はまずないと考えて良いのでしょうか? 2. 仮想関数で最も恐れるべきはキャッシュミスだと思うのですが、それについての危険性はそれほどかわりがない、でしょうか?簡単なクラスでベンチマークをとった結果は、「特定の範囲で繰り返してるだけ」に近かったせいか、クラスが小さかったせいか、横にはせまかったせいか、ほとんど変わりが分かりませんでした。) 3. コンストラクタやデストラクタについては、極力初期化リストで初期化、というパターンに頼った場合 かつ、孫クラス以外の、親クラスと子クラスは抽象クラスとなる、場合で かつ、親クラスのコンストラクタ、デストラクタはインライン化宣言されていて(つまり子クラスのコンストラクタ・デストラクタを呼ぶときにはその実装が既に見える位置に記述されるようになっていて) 子クラスのそれらはインライン宣言されていない という状況の場合、単純に1段階の継承のみで基底クラスのそれらがインライン宣言されていない場合と、最終的にコストは等価になると考えてもいいのでしょうか?
- ベストアンサー
- C・C++・C#
- LongSecret
- 回答数4
- 複数のオブジェクトと生成とその組み合わせ
外部からの入力で複数のオブジェクトを生成し、それらの可能な組み合わせをつくる方法でつまずいています。 例えば class mochimono { public: string name; int weight int maximum_number; }; というクラスを設定します。生成されるオブジェクトには名前と重さのほか”最大何個まで持ちうるか(設定できるか)”というパラメータがあります。 たとえば最大2つまでもてるのApple、最大1つまで持てるBananaという2つのオブジェクトをつくると name:Apple weight:2 maximum_number:2 name:Banana weight:3 maximum_number:1 ありうる組み合わせは Apple x 0, Banana x 0 Apple x 0, Banana x 1 Apple x 1, Banana x 0 Apple x 1, Banana x 1 Apple x 2, Banana x 0 Apple x 2, Banana x 1 となります。 この組み合わせを、例えば最後の組み合わせであれば”Apple, Apple, Banana"というオブジェクトのベクター”としてつくり、全体を”オブジェクトのベクターのベクター”として管理し、その後別の処理を行いたいと思っています。 ですが、オブジェクトが複数種類作られることを想定してこの組み合わせを”オブジェクトのベクターのベクター”として実現するアルゴリズムが作成できずに困っています。 アルゴリズム自体が思いつかず、抽象的で分かりずらいかもしれませんが、解決策があればよろしくお願いします。
- Vector ClassのVector配列
Vector配列からVector配列への代入などのアクセスは問題なく行えるのですが、 Vectorを入れ子にした場合?にエラーが生じてしまいます。 Class Myclass{ public: vector <int> num; }; vector <Myclass> obj; ・・・・ vector <Myclass>::iterator it=obj.begin(); vector <int> work; ・・・・ it->num=work; とするとエラーになってしまいます。 代入以外のresize()などのアクセスもエラーになってしまいますが、 vector が入れ子になっていることが関係しているのでしょうか? ご教示願います。
- ベストアンサー
- C・C++・C#
- scanfprintf
- 回答数4