• ベストアンサー

C言語で矩形波生成方法

charmer29-2の回答

  • ベストアンサー
回答No.5

あー失敬、理解しました。 ループの中であれこれ余計な計算をしているのが敗因でしょう。 極力可読性を損なわないようにループを書き換えるとこんな感じですね。 for (j = 0; j < last_time / tstep; ++j) { double re = fmod(j * tstep, T); if (re < T / 2) { output[j] = 1; } else { output[j] = -1; } } そうそう、 int max_step; max_step = rint(last_time/tstep); この行は素直に int max_step = rint(last_time/tstep); こう書いたほうが宜しいかと。尤も、rint()関数の意味を誤解しいているようなので、丸め関数についてはよく調べることをお勧めしておきます。 #rint()は所謂JIS丸めをする。

tiger2323
質問者

お礼

ありがとうございました! 今、試して成功しました!! なるほど、fmodは知りませんでした。大変勉強になります。 今回意外に重要だとわかった丸め誤差についても色々と調べてみようと思います。 とにかく、助かりました。ありがとうございます!

関連するQ&A

  • C言語の質問

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

  • 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ファイルからの変換はできないのでしょうか?

  • c言語 random

    c言語でrandom関数を使って乱数を生成してください

  • matlab と C++の混合

    こんばんは。matlab初心者で、分からないことがあるためこちらに参りました。 メイン関数はmatlabなのですが、その中に一部 C言語で書かれた関数を含んでおり、それをmatlabで実行させたいのですが、確かそのようなことは可能だときいたのですが、実際そうですよね?? もし、可能ならば、 今 matlabのメイン関数と C言語で書いた副オプログラムを 同じディレクトリに置いて試してみたのですが、それだけではエラーになってしまいました。matlabと C++を混合で実行させるにはどのようにしたら良いのでしょう? どなたか教えていただけると助かります。

  • C言語のライブラリで"A"を20文字生成する関数名を知りたいです。

    C言語のライブラリで"A"を20文字生成する関数名を知りたいです。 C言語やVBなどのプログラミングで良く関数やライブラリとして存在している名前を調べる良いサイトを知っている方はいらっしゃいますか?

  • 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の三ヶ月前に勉強して、使用しており、基礎がわかる程度です。 よろしくお願いします。

  • C言語について。

    C言語プログラマとしては、スタートアップコードは・・・ ・自分が書いたプログラムを、直接動かすために必要なライブラリ ・それはコンパイル後、リンカによって追加されるライブラリこれは、 どういう意味でしょうか?分かりやすく教えていただけると幸いです。すみません。で、 以下のかぶくんまんさんの回答です。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11247611941 で、 C言語におけるプログラミングとは「main関数を書くこと」に他ならない。なぜ「main関数を書く」ことがC言語におけるプログラミングに他ならないのかと言えば、それは偏に「C言語のコンパイラはmain関数を呼び出すプログラムを生成するから」です。それがmain関数を求めるので結果的にmain関数がリンクされ、そしてmain関数が求めるままに他の関数もリンクされていくわけです。 で、その「main関数を呼び出すプログラム」こそが、C言語における「スタートアップコード」。 という回答で、main関数以降は、プログラマが書くのですよね?プログラマが関数をリンクさせる様なプログラムを書くということでしょうか?教えていただけると幸いです。すみません。 という所が分かりません。教えていただけると幸いです。すみません。以下のURL https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12247932542

  • 矩形波 正弦波

    1MHzの矩形波から1MHzの正弦波を生成する方法を考えているのですが良い案があれば教えてもらいたいです. 矩形波はクロックとしてデジタル回路で用いています. 生成した正弦波はAM変調回路における搬送波として用いたいです.

  • どなたか、教えていただけませんでしょうか(C言語)?

    皆様のお知恵を拝借したく思いまして 投稿させていただきました C言語についての質問なのですが (1)文字配列の引数を一度mainからプロトタイプ関数へ渡し 関数で宣言して表示。 (2)さらにその関数内で、値を変更して mainで表示する 方法を教えていただきたく思いますので、宜しくお願い致します

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

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