#1
by こーたろー » 5年前
C言語でのこぎり波(キャリア三角波)を作成したいです。振幅は1で周期は600Hz程度を考えています。
私が考えたのは逆三角波(y=acos(cosx))を利用しましたが振幅が1を超えてしまいました。
インバータのプログラムを作成しているのでsinのプログラムもそもまま掲載いたします。
情報をお持ちのかたはお願いします。
コード:
#include<stdio.h>
#include<math.h>
#define N (99)
void main(void)
{
int i = 0;
double a[N + 1], b[N + 1], c[N + 1], pi, t,d[N + 1],ra;
pi = 4 * atan(1.0);
printf(" 時間 ωt sinwt のこぎり波\n");
/*sinωtの計算*/
for (i = 0; i <= N; i++) {
t = 0.01666666 * i / ((double N) + 1);
a[i] = t;
b[i] = 120 * pi * t;
c[i] = sin(b[i]);
}
/*のこぎり波*/
for(i=0;i<=N;i++){
t = 0.000166666666 * i/ ((double N) + 1);
ra = cos(1200 * pi * t);
d[i] =acos(ra);
printf("%4d %5.4lf %5.4lf %5.4lf %5.4lf \n",i, a[i], b[i], c[i],d[i]);
}
}
C言語でのこぎり波(キャリア三角波)を作成したいです。振幅は1で周期は600Hz程度を考えています。
私が考えたのは逆三角波(y=acos(cosx))を利用しましたが振幅が1を超えてしまいました。
インバータのプログラムを作成しているのでsinのプログラムもそもまま掲載いたします。
情報をお持ちのかたはお願いします。
[code]
#include<stdio.h>
#include<math.h>
#define N (99)
void main(void)
{
int i = 0;
double a[N + 1], b[N + 1], c[N + 1], pi, t,d[N + 1],ra;
pi = 4 * atan(1.0);
printf(" 時間 ωt sinwt のこぎり波\n");
/*sinωtの計算*/
for (i = 0; i <= N; i++) {
t = 0.01666666 * i / ((double N) + 1);
a[i] = t;
b[i] = 120 * pi * t;
c[i] = sin(b[i]);
}
/*のこぎり波*/
for(i=0;i<=N;i++){
t = 0.000166666666 * i/ ((double N) + 1);
ra = cos(1200 * pi * t);
d[i] =acos(ra);
printf("%4d %5.4lf %5.4lf %5.4lf %5.4lf \n",i, a[i], b[i], c[i],d[i]);
}
}
[/code]