【发布时间】:2020-08-02 19:42:16
【问题描述】:
我正在比较两个具有相同频率的不同相移波信号,我的第一个任务是用 C 语言测量两个信号之间的相移角。 实际上我来自 IC 领域,对编程语言不太了解,但我目前正在为此学习 C。
我会为 Correlation Co-efficient 编写代码来查找时间延迟。 但它显示一个错误。 enter image description here
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
int main()
{
bool True = 1; //for sqr wave conversion
bool False = 0 ;
int n[10],m[10] ; // n is an array of 10 integers (as of now assuming some value)
int i1, i2,x,y ;
int r,xx[10],xy[10],yy[10],nr=0,dr_1=0,dr_2=0,dr_3=0,dr=0;
int sum_y=0,sum_yy=0,sum_xy=0,sum_x=0,sum_xx=0;
int i, h=10;
/* initialize elements1 of array n to 0 */
for (i1=0;i1<10;i1++)
{
n[i1] = i1+1; // set an element at location i to 10
}
/* initialize elements2 of array n to 0 */
for (i2=0; i2<10; i2++)
{
m[i2] = i2+5;
}
//output of each array element
for (x=0 ;x<10; x++)
{
if (x%2 == 0) //sqr wave coversion
{
True = 1 ;
}
else
{
False = 0 ;
}
printf("element1 [%d] = %d\n" , x, n[x]);
}
for (y=0 ; y<10; y++)
{
if (y%2 == 0) //sqr wave
{
False = 0;
}
else
{
True = 1;
}
printf("element2 [%d] = %d\n" , y, m[y]);
}
for(i=0; i<h; i++)
{
xx[i]= x[i]*x[i];
yy[i]= y[i]*y[i];
}
for(i=0;i<h;i++)
{
sum_x+=x[i];
sum_y+=y[i];
sum_xx+= xx[i];
sum_yy+=yy[i];
sum_xy+= x[i]*y[i];
}
hr=(h*sum_xy)-(sum_x*sum_y);
int sum_x2=sum_x*sum_x;
int sum_y2=sum_y*sum_y;
dr_1=(h*sum_xx)-sum_x2;
dr_2=(h*sum_yy)-sum_y2;
dr_3=dr_1*dr_2;
dr=sqrt(dr_3);
r=(hr/dr);
printf("Total Numbers:%d\nCorrelation Coefficient:%.2f",h,r);
return 0;
}
查找相位角的代码仍然不完整,但到目前为止我正面临这个错误。[添加快照]
PS:我已经在硬件平台上完成了这项任务。
【问题讨论】:
-
嗨,这个问题不是真的on-topic for this site。如果您被困在代码的某些特定部分,请将其发布。如果您要的是通用算法,请改写问题并添加一些关于您尝试过的和无效的信息。
-
如果您来自硬件领域,您可能知道 PLL。
-
你知道计算值的方程式吗?
-
嗨,@Groo 是的,我已经在这段代码上做了一些工作......就像(1)首先为那些信号数据创建一个数组,我转换成方波来计算波之间的角度,现在我被困在相位角中......我猜这可能是我的最后一件事......这就是为什么我说建议我一些想法。
-
我假设你知道相位差方程? [正弦波的 A*sin(wt + x)] - 首先在代码中自己尝试,看看是否能得到预期的结果。如果没有,请在此处发布代码,我们可以帮助调试您的实现中的问题 :)跨度>
标签: c