10 ' フーリエ解析プログラム H16.5.14 D-04201 T.Oku 20 CLS 3 30 N=540 50 DIM X(N) 55 GOSUB *INPUTWAVE 90 '--------波形再生 100 X1=30:Y1=140:Z=1#:L1=550/N 110 LINE (X1,Y1-100)-(X1,Y1+100),7 120 LINE (X1,Y1)-(X1+(N+1)*L1,Y1),7 130 PSET (X1,Y1),7 140 FOR I=0 TO N 150 LINE-(X1+I*L1,Y1+X(I)*Z),7 160 NEXT I 170 '---------計算 180 PI=3.141592# 190 DT=PI*2/N 200 INPUT "次数:";M 210 DIM C1(M),C2(M),C(M) 220 FOR NN=0 TO M 230 C1(NN)=0:C2(NN)=0 240 NEXT NN 250 FOR NN=0 TO M 260 FOR I=0 TO N 270 C1(NN)=C1(NN)+DT/PI*X(I)*COS(NN*I*DT) 280 C2(NN)=C2(NN)+DT/PI*X(I)*SIN(NN*I*DT) 290 C(NN)=SQR(C1(NN)^2+C2(NN)^2) 300 NEXT I 310 NEXT NN 320 '--------パワスペクトル表示 330 X0=30:Y0=370:Z2=5:L=8 340 LINE (X0-1*Z2,Y0)-(X0+(M+5)*L ,Y0),7 350 FOR I=0 TO M 360 LINE (X0+I*L,Y0-2)-(X0+I*L,Y0+2),7 370 NEXT I 380 PSET(X0,Y0),7 390 FOR I=0 TO M 400 LINE -(X0+I*L ,Y0-C(I)*Z2),6 410 NEXT I 412 n$="s" 413 n$=inkey$ 414 if n$=" " then 420 else 412 420 '----------波形再生 425 LNG=360 430 DIM XP(LNG) 435 L3=550/LNG 436 DT=2*PI/LNG 440 FOR I= 0 TO LNG 450 XP=0 460 FOR NN=1 TO M 470 XP=XP+C1(NN)*COS(NN*I*DT)+C2(NN)*SIN(NN*I*DT) 480 NEXT NN 490 XP(I)=XP+C1(0)/2 500 NEXT I 501 PSET (X1,Y1) 510 '-------------再生波形描画 520 FOR I=0 TO LNG 530 LINE- (X1+I*L3,Y1+XP(I)*Z),3 540 NEXT I 550 '------------------- 560 INPUT "次数変更";TEMP 565 ERASE C1,C2,C,XP 567 CLS 3 570 GOTO 100 1000 *INPUTWAVE 1100 CLS 3 1109 PRINT "マウスの左ボタンを押して一周期分の波形を入力してください" 1110 LINE (50,50)-(590,350),7,B 1120 LINE (50,200)-(590,200),7 1130 PSET (50,200),6 1190 IF MOUSE(2,1)=1 THEN 1200 ELSE 1190 1200 FOR I=0 TO N 1210 X(I)=MOUSE(1)-200 1224 FOR W=0 TO 1000 :NEXT W 1226 LINE -(50+I,200+X(I)),6 1230 NEXT I 2000 INPUT "フーリエ解析します";TEMP 2100 CLS 3 2120 RETURN