请教一个C语言的程序。关于波形坐标输出的

请教一个C语言的程序。关于波形坐标输出的,第1张

/*

有一个类似正弦波的坐标数组

最简单的可以写成char code data1 a[0][]{-2,0,-1,1,0,0,1,-1,2,0}

画出来就是一个周期的波形

数组里偶数时X坐标,奇数是Y坐标, 数组是从0开始,,第一个位x,第二个为y吧,这样好理解些,

右移一次后,变成姿兆a[1][]={-2,-1,-1,0,0,1,1,0,2,-1}

右移2次后,变成a[2][]{-2,0,-1,-1,0,0,1,1,2,0}

右移3次后,变成a[3][]{-2,1,-1,0,0,-1,1,0,2,1}

接下来再从头来,就变成波浪一直右移了。

然后我要做的就是根据数组的初始坐标数组求出波形一格一格右移后的坐标

有两个参数,一个k,表示取第几个坐标,一个sum,表示数组的长度。

程序是唤嫌这样的,*/

void prg1()

{

k=0

while(k<sum)

{

x=data1[k]

y=data1[k+1]//?和册手//现在就是要写这个表达式

k=k+2

}

}

void prg2()

{

sum=0

while(sum<10)

{

prg1()

sum=sum+2

}

}

// 我建议,吧波形定义为一个三维数组,比如:data1[4][2][5]这样4表示波形总共就4个波形,2表示坐标,x用0,y用1,,最后5表示对应的值,使用矩阵表示出来的数据调用和循环起来都很简单x,y就可以使用同一个参数

void svpwm(float *ptr)

{

int A,B,C,N

double X,Y,Z,Tx,Ty,T0,T1,Tm,Th

if(usbeta>0)A=1

else 耐仿A=0

if((1.732051*usalfa-usbeta)>0)B=1

else B=0

if((1.732051*usalfa-usbeta)>0)C=1

else C=0

N=A+2*B+4*C//计算扇区

X=1.732051*usbeta*Ts/udc

Y=(0.8660*usbeta+1.5*usalfa)*Ts/udc

Z=(-0.8660*usbeta+1.5*usalfa)*Ts/udc

swith(N)//各扇区昌运纤工作时间悄虚

{

case 1:Tx=YTy=-Zbreak

case 2:Tx=-XTy=Ybreak

case 3:Tx=ZTy=Xbreak

case 4:Tx=-ZTy=-Xbreak

case 5:Tx=XTy=-Ybreak

default:Tx=-YTy=Z

}

if((Tx+Ty)>Ts)

{

Tx=Tx*Ts/(Tx+Ty)

Ty=Ty*Ts/(Tx+Ty)

}

T0=(Ts-(Tx+Ty))/4

T1=(Ts+Tx-Ty)/4

Tm=(Ts-Tx+Ty)/4

Th=(Ts+Tx+Ty)/4

swith(N)//比较寄存器赋值

{

case 1:*ptr=Tm*(ptr+1)=T0*(ptr+2)=Thbreak

case 2:*ptr=T0*(ptr+1)=Th*(ptr+2)=Tmbreak

case 3:*ptr=T0*(ptr+1)=T1*(ptr+2)=Thbreak

case 4:*ptr=Th*(ptr+1)=Tm*(ptr+2)=T0break

case 5:*ptr=Th*(ptr+1)=T0*(ptr+2)=T1break

default:*ptr=T1*(ptr+1)=Th*(ptr+2)=T0break

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12398428.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存