当前位置:  编程技术>综合
本页文章导读:
    ▪利用 gnuplot 绘制时间序列图      大名鼎鼎的 gnuplot 就不多介绍了。 通常我们利用数据文件绘图时,XY坐标的值都是实数,也就是我们要绘制图形的函数是R到R的映射。可有时横轴或纵轴的数据是时间值,时间.........
    ▪Gentoo时间显示不正确的解决方法      和其它Linux发行版不同,Gentoo完全是靠自己的设置来显示所有东西,比如png图片,jpeg图片的支持。 现在遇到了一个问题:时间显示不正确。最开始是参考Gentoo的官方文档来进行设置。 ln -sv.........
    ▪C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义       C语言可变参简介     我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的:       int printf( const char* format, ...);   它除了有一个参数fo.........

[1]利用 gnuplot 绘制时间序列图
    来源: 互联网  发布时间: 2013-11-10

大名鼎鼎的 gnuplot 就不多介绍了。

通常我们利用数据文件绘图时,XY坐标的值都是实数,也就是我们要绘制图形的函数是R到R的映射。可有时横轴或纵轴的数据是时间值,时间的格式每次可能还都不太一样。这时我们就需要特殊设置一下 gnuplot了。

假设我们有数据文件“timedat.dat”,文件的内容如下。

#日/月/年 值
01/06/93	100
17/08/93	900
04/10/93	1300
11/10/93	300
28/10/93	1000

可以看到,横坐标是时间值,需要将这个信息告诉gnuplot。利用如下的命令。 

set xdata time

类似的命令还包括:

set ydata time
set zdata time
set x2data time
set y2data time
set cbdata time

如果要回到原来的那种横坐标为数值的状态,可以执行如下命令:

set xdata 

下面还需要告诉 gnuplot 数据文件中的时间格式是什么样,要利用如下的命令

set timefmt "<format string>"

其中format string 用来描述数据文件中时间的格式。对于我们的数据文件,可以这样设置:

set timefmt "%d/%m/%y"

Gnuplot 支持的格式如下:

格式

解释

%d

day of the month, 1–31

%m

month of the year, 1–12 

%y

year, 0–99

%Y

year, 4-digit

%j

day of the year, 1–365

%H

hour, 0–24

%M

minute, 0–60

%s 

seconds since the Unix epoch (1970-01-01 00:00 UTC)

%S

second, integer 0–60 on output, (double) on input

%b

three-character abbreviation of the name of the month

%B

name of the month

 到这里就设置好了,下面开始显示

plot 'timedat.dat' using 1:2 with points ps 3 pt 6 title ""

输出的图形如下。  

可以看到输出的横坐标只有月份和日期,没有年份信息。如果需要加入年份信息,可以这样设置:

  set format x "%y/%m/%d"

然后更新一下输出:

Replot

这时的输出结果就满足我们的需求了。如果需要更细致的设置,请参考 gnuplot 的帮助文件。



作者:liyuanbhu 发表于2013-1-13 10:06:18 原文链接
阅读:38 评论:0 查看评论

    
[2]Gentoo时间显示不正确的解决方法
    来源: 互联网  发布时间: 2013-11-10
和其它Linux发行版不同,Gentoo完全是靠自己的设置来显示所有东西,比如png图片,jpeg图片的支持。


现在遇到了一个问题:时间显示不正确。最开始是参考Gentoo的官方文档来进行设置。


ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


然后修改/etc/conf.d/hwclock中的clock="local"


但是出来的时间还是不对。

给hwclock增加参数运行

hwclock --show --debug

发现打不开/dev/rtc设备,原来配置内核时,没有把RTC的设置选中,知道问题了,重新配置内核,经过漫长的编译过程,重启,时间终于对了。
作者:fo1_sky 发表于2013-1-13 10:57:19 原文链接
阅读:38 评论:0 查看评论

    
[3]C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
    来源: 互联网  发布时间: 2013-11-10

  • C语言可变参简介

    我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的:
      int printf( const char* format, ...);

  它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: 
      printf("%d",i);
      printf("%s",s);
      printf("the number is %d ,string is:%s", i, s);

  • 写一个简单的可变参数的C函数 
  下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的C函数要在程序中用到以下这些宏:
  void va_start( va_list arg_ptr, prev_param );
  type va_arg( va_list arg_ptr, type );
  void va_end( va_list arg_ptr );

  va在这里是variable-argument(可变参数)的意思.这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件.下面我们写一个简单的可变参数的函数,改函数至少有一个整数参数,第二个参数也是整数,是可选的.函数只是打印这两个参数的值.
  void simple_va_fun(int i, ...)
  {
    va_list arg_ptr;
    int j=0; 

    va_start(arg_ptr, i);
    j=va_arg(arg_ptr, int);
    va_end(arg_ptr); 

    printf("%d %d\n", i, j);
    return;
  }

     我们可以在我们的头文件中这样声明我们的函数: 
    extern void simple_va_fun(int i, ...);
   我们在程序中可以这样调用: 
    simple_va_fun(100); 
     simple_va_fun(100,200);

  从这个函数的实现可以看到,我们使用可变参数应该有以下步骤: 
  1)首先在函数里定义一个va_list型的变量,这里是arg_ptr,这个变量是指向参数的指针. 
  2)然后用va_start宏初始化变量arg_ptr,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数. 
  3)然后用va_arg返回可变的参数,并赋值给整数j. va_arg的第二个参数是你要返回的参数的类型,这里是int型.
  4)最后用va_end宏结束可变参数的获取.然后你就可以在函数里使用第二个参数了.如果函数有多个可变参数的,依次调用va_arg获取各个参数.

  如果我们用下面三种方法调用的话,都是合法的,但结果却不一样: 
  1)

      simple_va_fun(100);

      结果是:100 -123456789(会变的值) 

  2)
      simple_va_fun(100,200);
    结果是:100 200 
  3)
      simple_va_fun(100,200,300);
    结果是:100 200 

    我们看到第一种调用有错误,第二种调用正确,第三种调用尽管结果正确,但和我们函数最初的设计有冲突.下面我们探讨出现这些结果的原因和可变参数在编译器中是如何处理的。

  • 可变参数在编译器中的处理 
  我们知道va_start,va_arg,va_end是在stdarg.h中被定义成宏的,由于1)硬件平台的不同 2)编译器的不同,所以定义的宏也有所不同,下面以VC++中stdarg.h里x86平台的宏定义摘录如下(’\’号表示折行): 

  typedef char * va_list; 

  #define _INTSIZEOF(n) \ 
  ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) 

  #define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) ) 

  #define va_arg(ap,t) \ 
  ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) 

    #define va_end(ap) ( ap = (va_list)0 )

  定义_INTSIZEOF(n)主要是为了某些需要内存的对齐的系统.C语言的函数是从右向左压入堆栈的,图(1)是函数的参数在堆栈中的分布位置.我们看到va_list被定义成char*,有一些平台或操作系统定义为void*.再看va_start的定义,定义为&v+_INTSIZEOF(v),而&v是固定参数在堆栈的地址,所以我们运行va_start(ap, v)以后,ap指向第一个可变参数在堆栈的地址,如图: 

高地址|-----------------------------| 
            |函数返回地址 | 
            |-----------------------------| 
            |....... | 
            |-----------------------------| 
            |第n个参数(第一个可变参数) | 
            |-----------------------------|   <--va_start后ap指向 
            |第n-1个参数(最后一个固定参数)| 
低地址|-----------------------------|   <-- &v 
          图(1) 

    然后,我们用va_arg()取得类型t的可变参数值,以上例为int型为例,我们看一下va_arg取int型的返回值: 

  j= ( *(int*)((ap += _INTSIZEOF(int))-_INTSIZEOF(int)) );

  首先ap+=sizeof(int),已经指向下一个参数的地址了.然后返回ap-sizeof(int)的int*指针,这正是第一个可变参数在堆栈里的地址(图2).然后用*取得这个地址的内容(参数值)赋给j. 

高地址|-----------------------------| 
            |函数返回地址 | 
            |-----------------------------| 
            |....... | 
            |-----------------------------|  <--va_arg后ap指向 
            |第n个参数(第一个可变参数) | 
&n
    
最新技术文章:
.net/c#/asp.net iis7站长之家
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3