【问题标题】:How to calculate phase shift between two shifted wave signals in C如何计算C中两个移位波信号之间的相移
【发布时间】: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


【解决方案1】:

对不起,这是我的错..这里我用 n 和 m 替换了 x 和 y,这是一个 数组。 我解决了这个错误:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2014-03-10
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多