teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

誤字

2018/10/14 08:36

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- 音をフーリエ変換した時に、各音階のy軸の値のを無くしたい
1
+ 音をフーリエ変換した各音階の差
body CHANGED
@@ -1,24 +1,12 @@
1
1
  ###前提・実現したいこと
2
- MATLABで3つの音の和音(AとCsとE)を鳴らした後、フーリエ変換してグラフにプロットしています。
2
+ MATLABで3つの音の和音を鳴らした後、フーリエ変換してグラフにプロットしています。
3
3
 
4
4
  ###発生している問題・エラーメッセージ
5
- 各音階のy軸の値に差が出ています。なぜフーリエ変換をすると、音の大きさに差が出てしまうのか原因がわからないため、各音階のy軸の値を同一にする方法がわかりません。
5
+ 各音階のy軸の値に差が出ています。
6
6
 
7
7
  ###該当のソースコード
8
8
  ```MATLAB
9
- Fs = 8000; %サンプリングレート
10
- A = 440; %Aの周波数
11
- period = 0.02; %1秒間の信号の長さ
12
- t = (0:1/Fs:period-1/Fs);
13
- f = (1/period:1/period:Fs);
14
- sep = power(2, 1/12);
15
- Cs = A*power(sep, 4) %C#の周波数
16
- E = Cs*power(sep, 3) %Eの周波数
17
9
 
18
- % 〔信号の〕ひずみをなくすために0.2を各音に掛ける
19
- y = 0.2*sin(2*pi*(A)*t) + 0.2*sin(2*pi*Cs*t) + 0.2*sin(2*pi*E*t);
20
- sound(y, Fs);
21
- fy = fft(y); %フーリエ変換
22
10
 
23
11
  plot(f, abs(fy)/length(t));
24
12
  xlabel('frequency (Hz)')