- 1 名前:デフォルトの名無しさん [2009/06/24(水) 23:28:21 BE:454421568-DIA(282072)]
- あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。 ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 前スレ C/C++の宿題片付けます 127代目 pc12.2ch.net/test/read.cgi/tech/1244449887/
- 313 名前:300 [2009/07/01(水) 03:18:04 ]
- >>312
うぁぁぁぁあ ありがとうございます!m(__;)m アルゴリズム辞典なんて考えもありませんでした(汗)、、、 ほんとにありがとうございます!!!
- 314 名前:デフォルトの名無しさん [2009/07/01(水) 08:02:37 ]
- >>296
誰かお願いします〜
- 315 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 08:30:31 ]
- >>204
すいません、>>204はyaccなのですが、どなたかできる方がいらっしゃったらお願いします。 どこで聞けばいいのかわからなくて・・
- 316 名前:デフォルトの名無しさん [2009/07/01(水) 12:18:31 ]
- >>273
お願いします。
- 317 名前:デフォルトの名無しさん [2009/07/01(水) 12:38:53 ]
- >>134
お願いします。
- 318 名前: ◆/91kCCQXBo mailto:sage [2009/07/01(水) 12:50:27 ]
- >>290 問2 点数で順位付けするプログラム
jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/4-5
- 319 名前:デフォルトの名無しさん [2009/07/01(水) 14:57:27 ]
- >>204
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9624.txt yaccのみで、yylexは自分で実装(lexを使わない)で良いんだよね?
- 320 名前:デフォルトの名無しさん [2009/07/01(水) 15:11:30 ]
- >>134
>>317 input,output,実装方法の想定ができる程度の情報がないと、 どう作って良いかわからなくて、誰もやってくれないと思うよ。 講義で使ったベースになるソースをサンプルで付けるとか。
- 321 名前:デフォルトの名無しさん [2009/07/01(水) 15:52:41 ]
- <<183
ありがとうございます。 動かしてみます
- 322 名前:デフォルトの名無しさん [2009/07/01(水) 17:23:26 ]
- >>281
遅くなりましたが、ありがとうございました
- 323 名前:デフォルトの名無しさん [2009/07/01(水) 17:45:02 ]
- [1]授業単元:C言語
[2]問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9623.txt [3]環境 [3.1]OS:Windows [3.3]C [4]期限:7月5日午前10時まで [5]その他の制限:なし お願いします。
- 324 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 17:47:46 ]
- >>298
とりあえずデータはmain()の中で決め打ち ファイルから読み込ませたいなら、fopen()とか使って適当に書き換えて kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9625.c
- 325 名前:デフォルトの名無しさん [2009/07/01(水) 18:09:50 ]
- >>323
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9626.txt
- 326 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 18:24:19 ]
- >>325
あざすっ(u_u)o〃
- 327 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 19:39:29 ]
- >>319
その通りです。ありがとうございました!
- 328 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:47:08 ]
- 【質問テンプレ】
[1] 授業単元:プログラミング入門2 [2] 問題文 list1.datから名前・身長・体重を構造体に読み込み、BMI関数にてBMI値をI計算してlist2.datに書き込む。 [list1.dat] 名前 身長 体重 [list2.dat] 名前 身長 体重 BMI [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Visualstudio2008 [3.3] 言語: C [4] 期限: 7月3日 どうかよろしくおねがいします・・。
- 329 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:48:30 ]
- >>296
時間切れだけどよかったらどうぞ。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9626.txt
- 330 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:50:42 ]
- >>328
身長と体重の数値型は? BMIも何の数値型で出せばいいのかな? あと区切り文字は半角スペースでおk?
- 331 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:53:30 ]
- >>330
身長体重BMIはdouble型で、区切り文字は半角スペースです。 おねがいします・・。
- 332 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 21:16:50 ]
- [1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9629.zip [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C [4] 期限:7/2 [5] その他の制限:お願いします
- 333 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 21:29:14 ]
- [1] 授業単元:C++プログラミング
[2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9630.txt [3] 環境 [3.1] OS: Windows vista [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語: C++ [4] 期限: 09年7月2日 [5] その他の制限:
- 334 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 21:33:22 ]
- >>333
昨日くらいにこっちでみたなw C言語なら俺に聞け(入門篇) Part 50 pc12.2ch.net/test/read.cgi/tech/1246342847/
- 335 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 21:45:11 ]
- >>333
偶数のとき、星をどう書くかわからん 真ん中を2重にすればいいのかな?たとえば8ならこうとか * ** * * ** * **** ******** ******** **** * ** * * ** *
- 336 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 21:49:27 ]
- >>333ですが星形で奇数の場合は表示しない。
です。書き忘れました申し訳ありません
- 337 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:01:49 ]
- >>328
こんなんでどうでしょ。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9631.c
- 338 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:20:35 ]
- >>332
こんなんでよろし? ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9632.c
- 339 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:20:52 ]
- >>337
本当にありがとうございますっ。 感激です。
- 340 名前:デフォルトの名無しさん [2009/07/01(水) 22:28:30 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9633.txt [3] 環境 [3.1] OS: Linux [3.3] 言語: C [4] 期限: 7月2日9時 [5] その他の制限: ポインタと配列まで習いました
- 341 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:40:50 ]
- >>328
自分もやってみたが、>>337さんのがかっこいいね jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/6
- 342 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:46:00 ]
- 何度もすいません>>333です。
問題文と>>336はミスがありましたのでスルーしてください。 レスくださった方申し訳ないです。 [1] 授業単元:C++プログラミング [2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9636.txt [3] 環境 [3.1] OS: Windows vista [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語: C++ [4] 期限: 09年7月2日 [5] その他の制限:
- 343 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:59:02 ]
- >>341 君間違えてる気がする。
> >>328 > 自分もやってみたが、>>337さんのがかっこいいね >>332 自分もやってみたが、>>338さんのがかっこいいね jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/6 > 間違ってたらゴメン
- 344 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:00:08 ]
- >>338,343
ありがとうございます
- 345 名前:デフォルトの名無しさん [2009/07/02(木) 00:05:12 ]
- >>340
できるだけ、コンパクトには書いてみた。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9637.txt
- 346 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:16:20 ]
- >>340
だいぶゴチャゴチャしてしまった。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9638.c
- 347 名前:340 [2009/07/02(木) 00:19:19 ]
- >>345
コンパクトにしてくれてありがとうございます!
- 348 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:24:55 ]
- 篩の問題としては微妙な問題だな。
- 349 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:36:01 ]
- >>346
自分で実行してみた?
- 350 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:39:06 ]
- >>349
もう何回も動かしとるよ
- 351 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:45:03 ]
- >>350
じゃあ、正常に動いてるのは偶然だって理解してる?
- 352 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:47:15 ]
- >>351
まじっすか。 どの辺だか教えていただけると助かります。
- 353 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:49:28 ]
- 初期化してない配列に対して、*s!=-1をループ終了条件にしてるとこ。
- 354 名前:346 mailto:sage [2009/07/02(木) 00:54:29 ]
- >>353
我ながらこれはひどい。 教えてくれてありがとう。
- 355 名前:デフォルトの名無しさん [2009/07/02(木) 00:56:45 ]
- [1] 授業単元:デジタル信号
[2] 問題文:wavファイルをダウンサンプリングせよ [3] 環境 [3.1] OS:Windows [3.2] gcc [3.3] 言語:C [4] 期限: 今日のAM9:00 [5] その他の制限:現在のサンプリング周波数の1/2にダウンサンプリングさせたらエイリアシングが起きるのでその周波数成分を除去したいが、 wavファイルは8bitでの場合、データの内容が0〜256なのですが、どのようにサンプリング周波数と比べたらよいのでしょうか? for(i=0; i<snd->datanum; i++){ if(snd->sounddata[i] > snd->samplingrate*4){ snd->sounddata[i] == snd->sounddata[i]/2; printf("count %d\n",i); } if(i%2 == 0){ snd->monaural8[i] = 0; }
- 356 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:00:09 ]
- >>355
なんかすげーな そういう専門なのか? 以前見つけた資料あるので待って
- 357 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:03:50 ]
- おまた
www.madlabo.com/mad/book/other/sampleRateConvDoc.pdf この最後の方にダウンサンプリングの解決方法とか載ってる
- 358 名前:デフォルトの名無しさん [2009/07/02(木) 01:05:55 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9639.txt [3] 環境 [3.1] OS: Linux [3.3] 言語: C [4] 期限: 7月2日9:00〆 [5] その他の制限: ポインタと配列までは学習しました。
- 359 名前:デフォルトの名無しさん [2009/07/02(木) 01:26:56 ]
- >>357
ありがとうございます。まさに内容はコレなんですが、実装するさいにどのように比較するかがわからないんですよね。 私の持っている音サンプルだと、例えばサンプリング周波数は22050なんで、44100以上の周波数はアウトなんですよ。それをさらにサンプリング周波数を半分に落としたいんですよね。 ですけど、もともと音のデータは256でしか表現されてないんですよ、256=44100ではないですよね?(128で無音らしいです)。ではどのように比較すればよいのでしょうか? という質問です。 大変参考になりそうなのですが、できれば比較部分のソースが欲しいですね。 ちなみに、この分野に着手したばかりなので無知ですが専攻はこっち系ですね。。
- 360 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:29:51 ]
- >>359
サンプリング周波数は横軸としてみた場合サンプルビットは縦です 振幅する波の幅を記録するしてるだけです
- 361 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:33:02 ]
- >>359
振幅と周波数を比較することに意味は無いよ
- 362 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:37:13 ]
- サンプリング周波数が何かとかサンプリングビットが何かというのをきっちり理解した方がいい
www.apec.aichi-c.ed.jp/project/joho/jissyuu/sound/sound.files/oto.htm
- 363 名前:デフォルトの名無しさん [2009/07/02(木) 01:37:39 ]
- >>360
>>361 縦軸は振幅とな?? では周波数はどのように表現がなされているのですか??
- 364 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:40:19 ]
- >>359
詳しく見てないから的外れだったらごめん。と、先に謝っておく。 サンプリング周波数と音のデータを勘違いしているような気がする。 サンプリング周波数は「1秒間の音をいくつのデータで表現するか」 音のデータは「ある瞬間の音を数値化したもの」 あと、 >サンプリング周波数は22050なんで、44100以上の周波数はアウト 標本化定理からして数値が逆だと思う
- 365 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:40:33 ]
- >>363
よそへ行って勉強してくればよろし
- 366 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:41:03 ]
- >>363
サンプリング周波数と周波数は別よ サンプリング周波数というのは1秒間あたりの音の変化を 44100に分割する でその分割した波の高さを所定のビット幅に収めるのが8bitとか16bitってこと
- 367 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:41:57 ]
- >>366は
>44100に分割する 44100などで分割する
- 368 名前:デフォルトの名無しさん [2009/07/02(木) 01:42:25 ]
- >>329
ありがとうございます。 でも、ファイル間違えてるみたいで…それで、9628見つけたんですが、文字化けが… もう一度貼っていただけないでしょうか?
- 369 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:44:49 ]
- >>368
文字エンコードが違うだけじゃね
- 370 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:49:44 ]
- こっちにいいのがあったわ
www.amei.or.jp/report/DR_Div/base.htm
- 371 名前:デフォルトの名無しさん [2009/07/02(木) 01:50:18 ]
- >>364〜367
エイリアシングの条件は逆でしたね。 うーん、音データを1飛ばしで無音にするのとは何が違う??
- 372 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:55:04 ]
- >>357を読めよ
ただ単に答えが欲しいだけだろ
- 373 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:56:26 ]
- 配布されたソースがあるなら全部うpするよろし
エスパーして考えると for(i=0; i<snd->datanum; i++){ 「snd->datanum」が1秒間の分割数 if(snd->sounddata[i] > snd->samplingrate*4){ サンプリング周波数の4倍より大きい場合? snd->sounddata[i] == snd->sounddata[i]/2; 信号値を半分にする? printf("count %d\n",i); } if(i%2 == 0){ 偶数の時は snd->monaural8[i] = 0; 何かを0にする } forが閉じてないよ!? サンプリング周波数を半分に落とすだけなら 信号値を抜く(飛ばす)ことはあっても信号値を変化させること(3行目)はないはず
- 374 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:57:05 ]
- ダウンサンプリングは要するに音声データ圧縮技術の一部で、まだ(幾らかは)
動いている研究分野だと聞いたことがある。 宿題だとしてもどーしてもC言語で書かなければならないという必然性が見いだしにくい。 ひとえに理論だとかライブラリがどの程度揃っているかに依存する問題じゃないかと。 そういうスペシフィックで流動性が高い(というか最終的には主観的価値評価が)含まれる 問題はここで聞かれても最善の回答が出てくることはあんまし期待しないほうがいいかも。
- 375 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:57:11 ]
- >>357の42pにダウンサンプリングの具体例があってデシメーションフィルタを通すって書いてあるじゃん
- 376 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:58:34 ]
- >>373
snd->sounddata[i] == snd->sounddata[i]/2; 信号値を半分にする? これは半分にしないw こではサンプリング周波数で切り刻んだ波形の振幅だw
- 377 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:01:12 ]
- >>368
あれ?URL間違えて書いてたのか・・・。 正しくは以下で。まぁもう自力で見つけちゃってるみたいですが。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9628.c 文字コードはUTF-8です。
- 378 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:04:51 ]
- >>376
「==」に気づかんかったwww orz ついでに信号値=振幅のつもりだったんだけど通じんかったか >>355 >周波数成分を除去したいが、 なら信号値(サンプリング周波数で分割した波形の振幅)をあれこれするわけか >>373の下2行は忘れてくれ
- 379 名前:デフォルトの名無しさん [2009/07/02(木) 02:08:10 ]
- >>372〜375
答えが欲しいのです。考え方が理解できていないのでプログラムを書いてみようと思ったのですが、 当然理解できていないので詰まってしまったのでここで聞いてみたのです。 サンプリング周波数は特定の点に限ればツールを使用すればダウンサンプリングも出来てしまうのですが、 それだと趣旨と異なりますね。。 最初に晒したソースはチグハグでしたね。 4倍というのは、エイリアシングの条件を逆だと勘違いしたので、もともと2倍までOK、なら半分ならその4倍までOKと 思ってしまったのです。 何かを0にする、というのは量子化された値を0にすれば(つまり1個おきにデータをとれば)どうなるのかなと思いました。 ちなみにそれならば0よりも128の無音にしたほうが妥当ですね。 えと、1個おきにデータを取得すると、データが半分になり、再生時間も半分になるじゃないですか。 その点はどうすればいいのでしょうか?
- 380 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:13:59 ]
- >>379
奇数でも偶数でもいいのでサンプリングされたデータを8bitなら中央の128 16bitなら0にすればいい その代わり自分でも質問したようにノイズがでるからフィルターを通す必要があるんだよと・・・ ちょっとかじって勉強した程度なんでフィルタ部分はどうロジック化すればいいかわからんw
- 381 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:17:23 ]
- あ、ごめん
奇数でも偶数でもいいのでサンプリングされたデータを8bitなら中央の128 16bitなら0にすればいい これは忘れて サンプリングを間引けばいい wavのヘッダにサンプリング周波数とかをちゃんと入れておけば再生時に その数字を見てあわせてくれるから。
- 382 名前:デフォルトの名無しさん [2009/07/02(木) 02:23:25 ]
- 一個おきにデータ破棄をしてみたら、やはり2倍速(再生時間が半分)で再生されました。
ここは削った値に前後の割った値を入れてらどうなるかなとも思うんですが、そうすると サンプリング周波数がそのままでただ音質を劣化させただけになると思うんですよ。 >>380 音声データ数(再生時間に影響??)はそのままにするには無音にするべきなんですか? 一度してみたらキーンという音が発生します。。
- 383 名前:デフォルトの名無しさん [2009/07/02(木) 02:24:23 ]
- >>377
無事に見れました! かなり難しかったのでこれ見ながらまた勉強したいと思います。 ありがとうございました。
- 384 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:24:40 ]
- >>382
ヘッダを書き換えろよwww
- 385 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:26:18 ]
- >>382
だからー 44.1khzを22.05khzにデータを削ったらヘッダの情報も書き換えないと駄目だってw
- 386 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:27:35 ]
- >>358
こんなんでどうでしょ。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9640.c
- 387 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:33:09 ]
- wavのファイルフォーマットはこんな感じね
www.kk.iij4u.or.jp/~kondo/wave/ ・サンプリングレート ・データ速度 (Byte/sec) のところをダウンサンプリング後の数字にすればいい そうすれば再生側がここを元にタイミング調整するから
- 388 名前:デフォルトの名無しさん [2009/07/02(木) 02:33:51 ]
- >>384
おお、出来そうです!! ちなみに、LPFを通すというのはどういう作業になるのでしょうか??
- 389 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:34:11 ]
- あと
data チャンクの波形データのバイト数か
- 390 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:34:54 ]
- >>388
さすがにその辺はこのスレに専門でやってるやつはいないと思うw
- 391 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:38:39 ]
- LPFのソースあったわ
tosa.mri.co.jp/sounddb/nospeech/lpf.htm
- 392 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:38:41 ]
- >>390
いたらだめかな…。
- 393 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:40:46 ]
- もういっちょ
www.geocities.jp/horie_ryu/page05.html
- 394 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:41:29 ]
- >>392
じゃあ頼むわ 俺も勉強してー
- 395 名前:358 [2009/07/02(木) 02:45:40 ]
- >>386文字化けが><
- 396 名前:デフォルトの名無しさん [2009/07/02(木) 02:46:04 ]
- >>392
心強い。そしてここのスレの人、ありがとう。 だが、データ数を単純に半分にしてみたら、波形が線になっちゃったよ。 再生秒数がもともと6秒とかだったのが0.001とかのレベル。 ヘッダに入れるデータサイズはサンプル数*(チャンネル数*bit数/8)では? それならばサンプル数を2で割るだけでおkかと思っていたんですが違うのでしょうか??
- 397 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:48:25 ]
- >>396
その辺は>>387を参考に
- 398 名前:デフォルトの名無しさん [2009/07/02(木) 02:49:51 ]
- >>391
そのサイトは良く見るけど、はっきり言って自分の作るプログラムじゃないとあまり解らないんだ。 関数とかも学校の授業で習ったのしかしらなくてscanf()使ったらとあるサイトでボコボコに言われたし。。 解ってないところが解らないっていうのが苦痛
- 399 名前:386 mailto:sage [2009/07/02(木) 02:56:34 ]
- >>395
UTF-8で。
- 400 名前:デフォルトの名無しさん [2009/07/02(木) 03:02:09 ]
- >>397
出来ました、forに巻き込まれていて1/2しすぎたようです。。。 抜け出したらバッチリ。 unsigned int i=0,t=0; snd->samplingrate = snd->samplingrate/2; for(i=0; i<snd->datanum; i++){ if(i%2 == 0){ snd->sounddata[t] = snd->sounddata[i]; t++; } } snd->datanum = snd->datanum/2; という感じで出来ました、が、LPFは通さなくても良いのでしょうか? というか、LPFとはなんですか?なんとなく言っていることは解るんですが プログラム的にはさっぱりわかりません。。
- 401 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 03:09:13 ]
- >>400
この場合はダウンサンプリングすることによって本来あったはずの波形データが なくなるのでその補完がフィルタなので、雑音とかができてもいいならフィルター無しでもいいんじゃないかな? >>391は >Down sampling (48kHz -> 16kHz) with 7.7kHz low pass filter ってなってるのでcoefは7.7kzのフィルター用の数値だと思う。 固定なので使いにくそうだけど >>393の方は計算でこの辺の数字を求めてるようなので 使えそう
- 402 名前:358 [2009/07/02(木) 03:13:08 ]
- >>386
やってみたんですが石が表示されませんでした
- 403 名前:デフォルトの名無しさん [2009/07/02(木) 03:18:54 ]
- >>401
私の作ったプログラムはヘッダを書き換えて、間引いたという手順ですが、 本来はLPFを使用してから行うものですよね? 補完とはどこを補完するのですか? 是非ともLPFもプログラムとして理解して作りたいのですが
- 404 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 03:25:54 ]
- [1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9641.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名:gcc [3.3] 言語: C [4] 期限:今日12時 [5] その他の制限:ポインタとリストを最近習った どうかお願いします
- 405 名前:386 mailto:sage [2009/07/02(木) 03:37:02 ]
- >>402
じゃぁ解答の部分だけ扱いたい文字コードのファイルにコピペしていただく方向で。
- 406 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 03:39:04 ]
- >>403
LPFの必要性はこの辺 www.ne.jp/asahi/shiga/home/MyRoom/aliasingnois.htm ここがもっと丁寧 blog.jyoken.net/?eid=773796
- 407 名前:デフォルトの名無しさん [2009/07/02(木) 04:00:30 ]
- >>406
あまり理解できませんでしたが、プログラム的には またデータ部分をいじるわけですよね??LPFを通した後先ほどのプログラムで間引くと きれいにダウンサンプリングできました。と、いえるわけですか??
- 408 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 04:09:24 ]
- >>407
間引いたあとじゃないとノイズ成分が出ないと思うのでそのあとフィルターを通す感じ? 44.1KHzを22.05kHzにした場合はさらに半分の11.025khzのなんとかってなってたよね・・・・
- 409 名前:デフォルトの名無しさん [2009/07/02(木) 04:26:10 ]
- >>408
アンチエイリアシングフィルターは間引く前に通さないと意味無いよ。
- 410 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 04:30:07 ]
- >>409
ああ、そっかすまそ 先に高い周波数成分をなくしてか・・・ 寝ぼけてるな・・・
- 411 名前:デフォルトの名無しさん [2009/07/02(木) 04:35:32 ]
- >>408〜410
ですよね。 うーん、正直、さっぱりわからん。 LPFとはさ、高周波を取るわけじゃないですか? 周波数ってなんでブチって切れないの? 何を境にして切ってるの?
- 412 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 04:38:09 ]
- >>358 >>402
書いてみた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9642.c
- 413 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 04:48:57 ]
- >>411
まあアナログ値をサンプリングしたことあるとよくわかるんですが 入力波形の最高周波数の倍は無いときっちり拾えないですよ。 まあその辺の説明は>>406の下の方の >折り返し周波数 > >じゃあ、具体的にどういうものがエイリアスとなるのか、というのが問題になるわけですが、 >サンプリングしたときにエイリアスが発生しない最高の周波数は、サンプリング周波数の1/2です。 >これを折り返し周波数といいます。上の例ではサンプリング周波数が2Hzだから、限界は1Hzという >ことになります。 つまり44.1kHzのサンプリングレートというのは>>406にもこうあります >一般的に用いられている44100Hz(CDのサンプリング周波数)では、折り返し周波数は22050Hzで、 >これは人間の耳に聞こえる最高の周波数20000Hzぐらいに合わせてあります。これは、けっこう >ギリギリの周波数です。 つまりダウンサンプリングする場合はダウンサンプリング後のサンプリング周波数の半分を超える 周波数成分があるとノイズと化しますのでフィルターを通してなくしちゃいます。
|

|