| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2755 人关注过本帖
标题:将一维数组转化成曲线图
取消只看楼主 加入收藏
kyauto
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-3-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
将一维数组转化成曲线图
譬如我有一个20大小的数组
void main()
{
  int a[20]={。。。。。。。。。。。};//被赋值
  int i;
  。。。。。。
} 通过什么方式才能得到以i(0到20)为横坐标,以a[i]为纵坐标的离散点图,或者曲线
或者如何用C++得到曲线图
  求大神解答  
搜索更多相关主题的帖子: void 曲线图 散点图 如何 
2012-03-22 19:51
kyauto
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-3-8
收藏
得分:0 
回复 2楼 TonyDeng
我是菜鸟,能说得具体点么
2012-03-22 22:54
kyauto
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-3-8
收藏
得分:0 
回复 7楼 TonyDeng
版主很给力,我好好研究下,再请教
2012-03-23 18:07
kyauto
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-3-8
收藏
得分:0 
回复 9楼 TonyDeng
对的,就是这种
2012-03-27 20:20
kyauto
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-3-8
收藏
得分:0 
回复 12楼 TonyDeng
我试试把数组数据改了,看能不能得到我想要的曲线
谢谢斑竹对后学的帮助
2012-03-27 20:27
kyauto
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-3-8
收藏
得分:0 
程序代码:
程序基本看懂了,得到了我想要的曲线
主程序(作图):

#include <Windows.h>
#include <ctime>
#include <conio.h>
const int MaxValue(100);
const RECT Border = { 20, 20, 620, 350 };//const RECT Border = { 10, 10, 620, 350 };
const POINT Origin = { 20, 170 };
const POINT Sp = { 20, 70 };
#define N 500
struct arrar stepmain();
struct arrar
{
    float y[N];
};
void wmain(void)
{
    float Data[N];
    struct arrar p;
    p=stepmain();
    int i;
    for(i=0;i<N;i++)
    {
       
        Data[i]=p.y[i];
       
    }

    HDC hDC(GetDC(GetConsoleWindow()));
    HPEN hPen(CreatePen(PS_SOLID, 1, RGB(233, 19, 7)));
    HBRUSH hBrush(CreateSolidBrush(RGB(52, 184, 72)));
    SelectObject(hDC, hPen);
    SelectObject(hDC, hBrush);
    Rectangle(hDC, Border.left, Border.top, Border.right, Border.bottom);
    hPen = CreatePen(PS_SOLID, 1, RGB(54, 54, 182));
    SelectObject(hDC, hPen);
    MoveToEx(hDC, Origin.x, Origin.y, NULL);
    LineTo(hDC, Border.right, Origin.y);
    hPen = CreatePen(PS_SOLID, 1, RGB(98, 24, 102));
    SelectObject(hDC, hPen);
    MoveToEx(hDC, Sp.x, Sp.y, NULL);
    LineTo(hDC, Border.right, Sp.y);
    hPen = CreatePen(PS_SOLID, 1, RGB(255, 255, 0));
    SelectObject(hDC, hPen);
    MoveToEx(hDC, Origin.x, Origin.y - Data[0], NULL);
    for (size_t i = 1; i != _countof(Data); ++i)
    {
        LineTo(hDC, Origin.x + i * 0.7, Origin.y - Data[i]);
    }

    _getwch();

    DeleteObject(hBrush);
    DeleteObject(hPen);
    ReleaseDC(NULL, hDC);
} 



 子程序(提供Data[]数据):
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
#define ts 0.001
#define N 500
#define pi 3.14
float yd(int i,int s);
typedef struct arrar
{
    float y[N];
};
struct arrar stepmain()
{
    arrar data;
    float den[4]={1.0000,-2.9063,2.8227,-0.9164};
    float num[4]={ 0,0.0853*1.0e-003,0.3338*1.0e-003,0.0817*1.0e-003};
    float kp,ki,kd;
    float cu[3]={0,0,0};
    float cy[3]={0,0,0};
    float x[3]={0,0,0};
    float error_1=0;
    float u[N],error[N];
    int s,i;
    printf("输入数字1为step signal、2为square wave signal\n");
    scanf("%d",&s);
    if((s<1)||(s>3))
        {
            printf("请按要求输入1-2的整数,选择跟踪信号类型\n");
    return data;
    }
    if(s==1)
        {
            kp=0.5;ki=0.001;kd=0.001;
    }
       else
       {
           kp=0.5;ki=0.001;kd=0.001;
    }
        for(i=0;i<N;i++)
    {
        u[i]=kp*x[0]+kd*x[1]+ki*x[2];
        u[i]=(u[i]>10?10:u[i]);
        u[i]=(u[i]<-10?-10:u[i]);
        data.y[i]=-den[1]*cy[0]-den[2]*cy[1]-den[3]*cy[2]+num[1]*cu[0]+num[2]*cu[1]+num[3]*cu[2];
        //printf("y[%d]=%f  u[%d]=%f\n",i,y[i],i,u[i]);
        error[i]=yd(i,s)-data.y[i];
        cu[2]=cu[1];cu[1]=cu[0];cu[0]=u[i];
        cy[2]=cy[1];cy[1]=cy[0];cy[0]=data.y[i];
        x[0]=error[i];
        x[1]=(error[i]-error_1)/ts;
        x[2]+=error[i]*ts;
        error_1=error[i];
    }
        return data;
}
    float yd(int i,int s)
  {
      float y;
        if(s==1)
        {
            y=100;
            return y;
        }
        else
            {
                y=100*sin(8*pi*i*ts);
                return y;
            }
    }

运行效果图,不知道怎么上传不了了,大家可以自己试试
谢谢斑竹




 

[ 本帖最后由 kyauto 于 2012-3-28 20:50 编辑 ]
2012-03-28 20:39
kyauto
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-3-8
收藏
得分:0 
回复 16楼 TonyDeng
对的。。。
我还想能在x y轴加上文字说明
还请斑竹指导
2012-03-28 21:19
快速回复:将一维数组转化成曲线图
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047577 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved