怎样画波形图?

时间:2021-04-08 10:25:16
老师要我们写个程序,其中要求:画出一个方波的波形(取值:0、+1、-1)
我感到很茫然,大家给点意见。

18 个解决方案

#1


什么方波? 为什么用-1电平 ?

#2


你在上什么课(什么程序设计语言)的时候,要做这一作业? 要讲清楚.

#3


是通信方面的,就是编码,我不知道怎么画波形图,手头又没这方面的资料,所以向大家求助!

由0/1序列得到编码,码值可取:0、+1、-1(等宽度的).


#4


+1         __
0 __    __|  |____    __
-1  |__|          |__|  

0 -1 0 +1 0 0 -1 0
不知道这样是不是清楚了?

#5


你在vc里面用isotropic的模式绘图

设水平轴为时间轴,把采集来的信号转换成数字信号以后,直接连线就可以了

不过你的时间间隔要保证比较小!

#6


用matlab吧,很容易的!!

#7


isotropic没用过
我现在不需要信号采集
我只想知道就是给你一串0、+1、-1序列,怎么画出波形图?
时间比较紧啊!
TC下可以做图,不知大家了不了解怎么用?

#8


临时用C++编了一个,在BC下:

#include <stdio.h>
#include <graphics.h>

int MaxX, MaxY;  // The maximum resolution of the screen 
int ErrorCode;   // Reports any graphics errors 

void main(void)
{
  int  GD, GM;
  GD = DETECT;
  GM = 1;
  initgraph( &GD, &GM, " " );
  ErrorCode = graphresult();  // Read result of initialization
  if( ErrorCode != grOk ){    // Error occured during init
    printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );
    exit(1);
  }
  MaxX = getmaxx();
  MaxY = getmaxy();     // Read size of screen 
  setcolor(1);
  rectangle(0,0,MaxX,MaxY); // a box

  int ym=MaxY/2;
  line(0,ym,MaxX,ym); // x-axis
  setcolor(11);
  int b[20]={0,1,0,-1,0,0,-1,0,1,0,0,1,0,-1,0,0,-1,0,1,0};
  int dx=30;
  int x0=20;

  for(int i=0;i<20;i++)
   {
    switch(b[i])
    {
     case 0:
       line(x0+i*dx,ym,x0+i*dx+dx,ym); break;
     case +1:
       line(x0+i*dx,ym,x0+i*dx,ym-40);
       line(x0+i*dx,ym-40,x0+i*dx+dx,ym-40);
       line(x0+i*dx+dx,ym,x0+i*dx+dx,ym-40); break;
     case -1:
       line(x0+i*dx,ym,x0+i*dx,ym+40);
       line(x0+i*dx,ym+40,x0+i*dx+dx,ym+40);
       line(x0+i*dx+dx,ym,x0+i*dx+dx,ym+40); break;
    }
   }
  getch();
  closegraph();
  }

#9


非常感谢!!!

#10


通信学院的?很多软件可以生成这样的图,PROTEL就可以,设计一个逻辑电路(最简单的就是7407啊,加上电源和地),然后运行仿真,加上你自己的激励源(你自己的函数),它就自己给你画出来了。

#11


EnigmaXJ(Xjie) ( ) :
   我也是替别人写的,没有这么麻烦!多谢你的指教.

#12


csdncannon(大炮) : 
我的程序你能正常显示吗?

#13


要包含graphics.h文件,该怎么设置?(我用的VC)

#14


由于我的机器上只有TC,BC,BP,Delphi,没有装VC,所以不能将上面的程序移植过去进行调试.
要用VC,graphics.h文件估计用不到的,因为VC本身就在图形用户界面下的,无需再设置图形模式.
另外,在VC下,其他语句也不一定相同.

#15


那TC下的更好!谢谢了
TC下好象要设置图形模式,怎么弄?

#16


下面已经改为TC的了:

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>

int    MaxX, MaxY;  /* The maximum resolution of the screen */
int    ErrorCode;   /* Reports any graphics errors */

void main(void)
{
  int  GD, GM, ym, dx, x0, i;
  int b[20]={0,1,0,-1,0,0,-1,0,1,0,0,1,0,-1,0,0,-1,0,1,0};
  GD = DETECT;
  GM = 1;
  initgraph( &GD, &GM, " " );
  ErrorCode = graphresult();  /* Read result of initialization*/
  if( ErrorCode != grOk ){    /* Error occured during init */
    printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );
    exit(1);
  }
  MaxX = getmaxx();
  MaxY = getmaxy();     /* Read size of screen */
  setcolor(1);
  rectangle(0,0,MaxX,MaxY); /* a box */

  ym=MaxY/2;
  line(0,ym,MaxX,ym);       /* x-axis */
  setcolor(11);
  dx=30;
  x0=20;

  for(i=0;i<20;i++)
   {
    switch(b[i])
    {
     case 0:
       line(x0+i*dx,ym,x0+i*dx+dx,ym); break;
     case +1:
       line(x0+i*dx,ym,x0+i*dx,ym-40);
       line(x0+i*dx,ym-40,x0+i*dx+dx,ym-40);
       line(x0+i*dx+dx,ym,x0+i*dx+dx,ym-40); break;
     case -1:
       line(x0+i*dx,ym,x0+i*dx,ym+40);
       line(x0+i*dx,ym+40,x0+i*dx+dx,ym+40);
       line(x0+i*dx+dx,ym,x0+i*dx+dx,ym+40); break;
    }
   }
  getch();
  closegraph();
  }

#17


其中: 
 
  GD = DETECT;
  GM = 1;
  initgraph( &GD, &GM, " " );

3语句就是设置图形模式.

#18


学习中◎~

#1


什么方波? 为什么用-1电平 ?

#2


你在上什么课(什么程序设计语言)的时候,要做这一作业? 要讲清楚.

#3


是通信方面的,就是编码,我不知道怎么画波形图,手头又没这方面的资料,所以向大家求助!

由0/1序列得到编码,码值可取:0、+1、-1(等宽度的).


#4


+1         __
0 __    __|  |____    __
-1  |__|          |__|  

0 -1 0 +1 0 0 -1 0
不知道这样是不是清楚了?

#5


你在vc里面用isotropic的模式绘图

设水平轴为时间轴,把采集来的信号转换成数字信号以后,直接连线就可以了

不过你的时间间隔要保证比较小!

#6


用matlab吧,很容易的!!

#7


isotropic没用过
我现在不需要信号采集
我只想知道就是给你一串0、+1、-1序列,怎么画出波形图?
时间比较紧啊!
TC下可以做图,不知大家了不了解怎么用?

#8


临时用C++编了一个,在BC下:

#include <stdio.h>
#include <graphics.h>

int MaxX, MaxY;  // The maximum resolution of the screen 
int ErrorCode;   // Reports any graphics errors 

void main(void)
{
  int  GD, GM;
  GD = DETECT;
  GM = 1;
  initgraph( &GD, &GM, " " );
  ErrorCode = graphresult();  // Read result of initialization
  if( ErrorCode != grOk ){    // Error occured during init
    printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );
    exit(1);
  }
  MaxX = getmaxx();
  MaxY = getmaxy();     // Read size of screen 
  setcolor(1);
  rectangle(0,0,MaxX,MaxY); // a box

  int ym=MaxY/2;
  line(0,ym,MaxX,ym); // x-axis
  setcolor(11);
  int b[20]={0,1,0,-1,0,0,-1,0,1,0,0,1,0,-1,0,0,-1,0,1,0};
  int dx=30;
  int x0=20;

  for(int i=0;i<20;i++)
   {
    switch(b[i])
    {
     case 0:
       line(x0+i*dx,ym,x0+i*dx+dx,ym); break;
     case +1:
       line(x0+i*dx,ym,x0+i*dx,ym-40);
       line(x0+i*dx,ym-40,x0+i*dx+dx,ym-40);
       line(x0+i*dx+dx,ym,x0+i*dx+dx,ym-40); break;
     case -1:
       line(x0+i*dx,ym,x0+i*dx,ym+40);
       line(x0+i*dx,ym+40,x0+i*dx+dx,ym+40);
       line(x0+i*dx+dx,ym,x0+i*dx+dx,ym+40); break;
    }
   }
  getch();
  closegraph();
  }

#9


非常感谢!!!

#10


通信学院的?很多软件可以生成这样的图,PROTEL就可以,设计一个逻辑电路(最简单的就是7407啊,加上电源和地),然后运行仿真,加上你自己的激励源(你自己的函数),它就自己给你画出来了。

#11


EnigmaXJ(Xjie) ( ) :
   我也是替别人写的,没有这么麻烦!多谢你的指教.

#12


csdncannon(大炮) : 
我的程序你能正常显示吗?

#13


要包含graphics.h文件,该怎么设置?(我用的VC)

#14


由于我的机器上只有TC,BC,BP,Delphi,没有装VC,所以不能将上面的程序移植过去进行调试.
要用VC,graphics.h文件估计用不到的,因为VC本身就在图形用户界面下的,无需再设置图形模式.
另外,在VC下,其他语句也不一定相同.

#15


那TC下的更好!谢谢了
TC下好象要设置图形模式,怎么弄?

#16


下面已经改为TC的了:

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>

int    MaxX, MaxY;  /* The maximum resolution of the screen */
int    ErrorCode;   /* Reports any graphics errors */

void main(void)
{
  int  GD, GM, ym, dx, x0, i;
  int b[20]={0,1,0,-1,0,0,-1,0,1,0,0,1,0,-1,0,0,-1,0,1,0};
  GD = DETECT;
  GM = 1;
  initgraph( &GD, &GM, " " );
  ErrorCode = graphresult();  /* Read result of initialization*/
  if( ErrorCode != grOk ){    /* Error occured during init */
    printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );
    exit(1);
  }
  MaxX = getmaxx();
  MaxY = getmaxy();     /* Read size of screen */
  setcolor(1);
  rectangle(0,0,MaxX,MaxY); /* a box */

  ym=MaxY/2;
  line(0,ym,MaxX,ym);       /* x-axis */
  setcolor(11);
  dx=30;
  x0=20;

  for(i=0;i<20;i++)
   {
    switch(b[i])
    {
     case 0:
       line(x0+i*dx,ym,x0+i*dx+dx,ym); break;
     case +1:
       line(x0+i*dx,ym,x0+i*dx,ym-40);
       line(x0+i*dx,ym-40,x0+i*dx+dx,ym-40);
       line(x0+i*dx+dx,ym,x0+i*dx+dx,ym-40); break;
     case -1:
       line(x0+i*dx,ym,x0+i*dx,ym+40);
       line(x0+i*dx,ym+40,x0+i*dx+dx,ym+40);
       line(x0+i*dx+dx,ym,x0+i*dx+dx,ym+40); break;
    }
   }
  getch();
  closegraph();
  }

#17


其中: 
 
  GD = DETECT;
  GM = 1;
  initgraph( &GD, &GM, " " );

3语句就是设置图形模式.

#18


学习中◎~