绘图线 C# 的占空比矩形波问题

问题描述

我需要使用 drawline 绘制矩形波,具体取决于占空比、频率和幅度(使用轨迹栏)。一切正常,除了占空比。

这是我的波的公式,基本上是方波:

double y = Math.Sign(Math.Sin(x / 180 * Math.PI)) * amplitude.Value;

我使用一个图片框来绘制它(每个整数都只是为了在图片框上更好地显示):

private void P_ZoneDeTrace_Paint(object sender,PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen myPen = new Pen(Color.Green);

        double x1 = 10;
        double y1 = 0;
            
       
        for (double x = 1; x < pictureBox1.Width*10; x++)
        {
            double y = Math.Sign(Math.Sin(x / 180 * Math.PI)) * amplitude.Value;
         
            g.DrawLine(myPen,(float)x1,(float)y1 + 120,(float)(x / fréquence.Value) + 10,(float)y + 120);
            x1 = x / fréquence.Value + 10;
            y1 = y;
            
        }}

我现在有一个规则的方波。现在我需要将它转换成矩形波,使用占空比,它是一个轨迹条,从 0 到 10。如果它等于 0,则波始终为 -1,如果等于 10,则波始终为 1。

在我的 else 中,当占空比介于 1 和 9 之间时,我尝试管理波形:

  • 接近 1,每个模式都必须在 -1 处停留更长时间
  • 接近 9,每个模式都必须在 1 处停留更长时间

这是 y 公式下的代码,用于执行此操作:

 int i = 0;
 int val = 0;
                if (rapport.Value == 0)
                {
                    if (y < 0)
                    {
                        y = y * -1;
                    }
                }
                if (rapport.Value == 10)
                {
                    if (y > 0)
                    {
                        y = y * -1;
                    }
                }

                else
                {
                    if (y>0 && i < rapport.Value *18 && val==0)
                    {
                        y = y * -1;
                        i++;
                    }

                    if (y > 0 && i == (rapport.Value * 18))
                    {
                        val = 1;

                    }


                    if (y < 0 && val == 1)
                    {
                        i = 0;
                        val = 0;
                    }


                }

我将“y”乘以 -1 以从 -1 到 1,反之亦然。 “融洽”是占空比,它乘以 18 以与我的波浪成正比。 “val”帮助我修改一个模式以外的其他模式(如果我不使用“val”,则只修改一个

问题是只有第一个模式运行良好,如前所述。对于其他模式,当占空比接近 1 时(如果接近 9,则相反),波将保持在 1 处。

这是完整的信号:

enter image description here

一个模式,这是正确的:

enter image description here

其他模式,错了,应该和第一个一样:

enter image description here

每个模式都应该与第一个相同,正如您所看到的,它不起作用。他们正在使用轨迹栏移动,但还不够,如上图所示)。

如果你能帮我解决这个问题,每个模式都必须表现得像第一个?提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)