• ベストアンサー

ひずみ波形の波形分析のプログラム

ひずみ波形の波形分析のプログラムを作れといわれました。 が、当方ズブの素人でまったくわかりません。 プログラムとしてはこんな感じのを作れと・・・ まず始めにデータ数m(任意)を入力 次に、高さの入力(任意) すべて入力しおわったら確認の画面(yes or no) 入力した値を基に計算 an sin wt +bn cos n wt =√A(二乗)+B(二乗) * sin(n wt+θn) θn=tan-1B/A an、b0、bn, √A(二乗)+B(二乗) * sin(n wt+θn)θn=tan-1B/A θn (但し、n=1~10) 書き方下手でよく分からないかと思いますが、これが精いっぱいです。 このプログラムを誰か教えてください。 C言語でお願いします。

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

  • ベストアンサー
  • uyama33
  • ベストアンサー率30% (137/450)
回答No.2

 波形解析ソフトの購入をお勧めします。 理由は、振動を計測して振動のデータを取り込むのは 人間には大変です。  これを、FFTで処理すると 実部、虚部からsin, cos の成分がわかります。  スペクトラムを計算すれば 振幅の値も得られます。  ソフトが安くないのが難点ですが 自分でプログラムを書くには Digital Signal Processing を読めばいいのですが、 時間がかかります。 私なら買います。  信号の計測はまた別の問題になります。 データ量が多くなるとかなり面倒ですよ。

その他の回答 (1)

回答No.1

示された計算式に不明な点が多く、実装できません。 また、ここはあなたの代わりにだれかにコードを書いてもらえるところでもありません。 ズブの素人のあなたがなぜプログラミングをしなければならないのですか?

関連するQ&A

  • 東大入試(理系)っぽいのを自作したのですが、これって東大レベルですか?

    A1=B1=1 An+1 = An +Bn Bn+1 = Bn このとき、任意のn(1,2,3,4、、、)に対してAnとBnが互いに素であることを証明せよ

  • IF関数

    A列とB列に数字が入力されており、An>=Bn(nは任意の整数)のとき、Cn(C列)にXという文字を入力、An<Bnの場合は、Cnは空欄にしたいのです。 IF関数を使ってCnに =IF(An>=Bn,X,) と入れてみましたが、An>=Bnの時は、♯Name?というエラーメッセージがでて、An<Bnの場合は0が入力されます。 どこが間違っているでしょうか。

  • 数列の問題です。教えて下さい!

    a1=3、an+1=2-an分の1(n=1,2,3,・・・)で定められる数列{an}がある。 数列{bn}をbn=2のn乗×an分の2n+1(n=1,2,3・・)によって定められる。 S=b1+b2+b3+・・・・bnとするときSをnを用いて表せ。 anは数学的帰納法を使って求めることはできたと思うのですが、 そのあとをどうやって解けばいいのか分かりません。 詳しい解説をよろしくお願いします。

  • フーリエ係数

    画像のような波形信号のフーリエ係数を求めるときは [0-π]の範囲ではf(t)=4sin(t)で、[π-2π]の範囲ではf(t)=0として計算すればよいのでしょうか? そうすると計算式は積分範囲は[0-π]で a0=(1/π)*∫4sin(t)dt, an=(1/π)*∫4sin(t)*cos(nt)dt, bn=(1/π)*∫4sin(t)*sin(nt)dt, となるのでしょうか? また、周期2πで、[-π,π]において、f(t)=π-|t|、で表わされる関数f(t)のフーリエ係数は a0=π, an=(2/n)*(cos(nπ)-sin(nπ)), bn=0, になったのですが(計算があってるかはわかりません) フーリエ級数を求めるには、この後どうすればいいのでしょうか? よろしくお願いします。

  • フーリエ級数の問題

    f(x)は周期2πをもつとする。 f(x)のフーリエ級数を求める。 (1)f(x)=x(-(π/2)<x<(π/2)),π-x((π/2)<x<(3π/2)),  この条件でフーリエ級数を求めると、  グラフを描くと奇関数になるので、a0=0,an=0, bn=(4/nの2乗π)sin(π/2)n したがってフーリエ級数は、 f(x)=(4/π){sinx-(1/9)sin3x+(1/25)sin5x-・・・} でいいのでしょうか? (2)f(x)=xの2乗(-(π/2)<x<(π/2)),π/4((π/2)<x<(3π/2)),  グラフを描くと、偶関数になったので、bn=0, a0=(πの2乗)/6, an=(2/π){(π/nの2乗)cos(π/2)n-(2/nの3乗)sin(π/2)n} よって、  f(x)=((πの2乗)/6)+(2/π){-2cosx-(π/4)cos2x+(2/27)          cos3x+・・・} これでいいのでしょうか?  ご回答よろしくお願いします。

  • フーリエ級数でホワイトノイズを表現する

    フーリエ変換では例えば時系列をcos, sinで分解してその係数をa0,a1,a2...., b1,b2,......を求めることになると思います.cosの方の係数がa, sinの方の係数がbです.(このあたりは十分説明し切れていませんが,標準テキストの表現と同じなので知っている方にはおなじみのことです.) さて,質問ですが,ホワイトノイズは各周波数成分(n)のパワーが均等になっているものだと思います. すなわちan^2+bn^2=1 という関係が全部のnで成り立つということですね.ただし,an, bnの値はこれでは決まらないので(0,1)の乱数を発生させてanを決め,それに応じたbnを決めました.位相のランダム性ということですが.そしてそれをフーリエ級数の時系列を表現する式に代入してプログラムでホワイトノイズ波形を作成しようとしたのですが,おかしいのです.ここまでの考え方で何か間違っているでしょうか. 自分としては以下の点を疑っています. 1.an, bnは正負の符号はどうなっていたでしょうか.この考え方では両方共正の値となっています.乱数を発生させても正・負は決めることができません.平方根をとる時に正の値だけになってしまいます. 2.時系列を表現する式というのはフーリエ逆変換と同じですが,FFTなどの方式は使わず,単純に和を取りました.Σan cos(theta)+bn sin(theta) というような式で初項はa0/2としました.最終項もちょっと違いますが,普通のテキストに載っている式です.フーリエ成分の重ねあわせと時間方向の進行があるので2重ループとなりますが. 3.乱数の発生のさせ方がまずい.Fortranのサイトから持ってきたものです.時間で発生させるものとか整数を与えて発生させるものなどいろいろです. 以上です.発生させた波形がどうおかしいのか言っていませんが,最初の数項だけはこうなっています. 0 128.288 1 128.345 2 0.443 3 42.991 4 0.497 5 26.035 6 0.667 7 18.964 ホワイトノイズ波形などそもそも作れるのかなと思いますが.どうでしょうか.よろしくお願いします.

  • 数列を教えて下さい

    a1=3,an+1=2-1/an(n=1,2,3,……)で定められる数列{an}がある。 (1)a2,a3,a4を求めよ。 →自力で解けました。 たぶんa2=5/3,a3=7/5,a4=9/7です。 (2)(1)よりanを推測し、anをnを用いて表せ。また、その推測が正しいことを数学的帰納法で証明せよ。 (3)数列{bn}を、bn=2n+1/2^n・an(n=1,2,3,……)によって定める。S=b1+b2+b3+………+bnとするとき、Sをnを用いて表せ。 解説と解答をお願いします。

  • 数列の計算で・・・

    数列の問題で、 an+(-1+√3/2)bn=(1+√3/2)A^n-1・・・(1) an+(-1-√3/2)bn=(1-√3/2)B^n-1・・・(2) 上記の式を利用して anとbnをA,Bを用いて表せ。 という問題があったのですが、 解答はいきなり、 (1)、(2)より an=1/2√3(A^n-B^n) bn=1/√3{(1+√3/2)A^n-1-(1-√3/2)B^n-1)} となっていましたが、どんな計算をしたのでしょうか? (1)と(2)をたしたり引いたりしてみたのですがなかなか 解答の答えにいかずに困っています・・・

  • 数列の極限の証明

    「a1=a,b1=b,(a>b>0) a(n+1)=(an+bn)/2 b(n+1)=anbn^1/2 で定まる二つの数列{an},{bn}は同じ極限値を持つことを示せ。」 という問題を解いていて、このリンクの証明を見たのですが、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1463528674 証明の最後で、a_n+1=ka_n を満たす1より小さい正の実数kが存在することから、 a_n=k^(n-1)*a1 として、n→∞でa_n→0としていましたが、 a_n=f(n)として、f(x)が単調減少関数でf(n+1)=k_n(fn) (k_nはnによって変化する1より小さいある正の定数)となっても、 k_nはnに依存するので、必ずしもx(またはn)→∞でf(x)(またはf(n))→0になるとは限らないのではないのでしょうか。(ex. k_n→1 (n→∞), f(x)=(1/x)+(1/2)) その可能性はないのでしょうか? 以下がリンク先の証明の全文です。 与えられた漸化式と0<a<bより帰納的に0<an,0<bnとなる。 すると相加・相乗平均の関係より a(n+1)/b(n+1)=(an+bn)/2√(anbn) =(1/2){√(an/bn)+√(bn/an)}≧(1/2)*2*√(an/bn)*√(bn/an) =1 ∴b(n+1)≦a(n+1)となる。 ここで等号が成り立つとすると bn=anより a(n+1)=(1/2)(an+bn)=(1/2)*2an=an となり an=a(n-1)=…=a1=a=b1=b となりa<bに矛盾する。 よって等号は成立しないので b(n+1)<a(n+1) となり、したがって bn<an…(*) となる。 すると an+bn<2anより a(n+1)=(1/2)(an+bn)<(1/2)*2an=an となる。 したがって0<anより a(n+1)=k*an を満たす1より小さい正の実数kが存在する。 すると an=k*a(n-1)=k^2*a(n-2)=…=k^(n-1)*a1=k^(n-1)*a となるから lim[n→∞]an=a*lim[n→∞]k^(n-1)=0…(**) となる。 すると(*)と0<bnより 0<bn<an だから(**)からはさみうちの原理により lim[n→∞]bn=0 となる。 よって lim[n→∞]an=lim[n→∞]bn=0 となる。

  • C言語

    C言語でサイン波形を描こうとしています。sinxで角度を入力する場合はできるのですが、sin wtで時間変化で描こうとするとできません…プログラム教えてください。