WinCE应用程序开发算术坐标和对数坐标显示

1. 功能:以算术坐标和对数坐标的方式显示数据曲线,适用于X轴和Y轴。

2. 实现:

2.1 平台: WinCE6.0 + VS2005

2.2 实现方法:如果是算术坐标显示,则数据值的差值与屏幕上像素点的间距成线性比例;如果是对数坐标显示,则数据值的差值与屏幕上像素点的间距不成线性比例,而是非线性的,计算公式为:

Matlab代码:

clc;
%% 几种对数显示方式的比较
clc;
clear all;
close all;
x=1:0.1:10;
y=10*x.^2;
%y=x;
figure(1);
subplot(221);
plot(x,y);%x,y都是线性坐标
title('plot(x,y)');grid on;
subplot(222);
semilogx(x,y);%x是对数坐标,即将x取10的对数
title('semilogx(x,y)');grid on;
subplot(223);
semilogy(x,y);%y是对数坐标,即将y取10的对数
title('semilogy(x,y)');grid on;
subplot(224);
loglog(x,y);%x和y都是对数坐标,即将x和y取10的对数
title('loglog(x,y)');grid on;
%%-------------------End-------------------------------

Y轴原始数据为各个横轴x值的指数值。

运行效果为:

2.2.1  横轴算术坐标显示,纵轴算术坐标显示

  这种方法按照数据值的差值与屏幕上像素点的间距成线性比例依次求出各个数据点的坐标即可。

2.2.2  横轴对数坐标显示,纵轴算术坐标显示

Matlab代码如下:

% X轴对数坐标显示,Y轴算术坐标显示
  clc;
  clear all;
  close all;
  x0Pixel = 0;
  x2Pixel = 10;  %像素点间距
  x0 = 1;
  x2 = 10;     % 实际的X轴值,x2Pixel表示离X轴原点的像素点距离
  x1=2;
  xPos = zeros(1,10);
  yPos = zeros(1,10);
  for x1=1:1:10
    k=(log(x1)-log(x0))/(log(x2)-log(x0));
    x1Pixel=(x2Pixel+(1-k)*x0Pixel)*k;
    xPos(x1)=x1Pixel;
    y=10*x1.^2;
    yPos(x1) = y;
  end
  figure(1);
  plot(xPos,yPos);  

  %----------------------End---------------------------

运行效果为:

使用LabVIEW软件显示这条曲线,如下图:

 

2.2.3  横轴算术坐标显示,纵轴对数坐标显示

Matlab代码如下:

% X轴算术坐标显示,Y轴对数坐标显示

  clc;
  clear all;
  close all;
  y0Pixel = 0;
  y2Pixel = 20;  %像素点个数最大值 y2Pixel表示离X轴原点的像素点距离
  y0 = 10;       % 对应于x1 =1;
  y2 = 1000;     % 实际的X轴值,对应于x1=10
  xPos = zeros(1,10);
  yPos = zeros(1,10);
  for x1=1:1:10
    xPos(x1)=x1;
    y1=10*x1.^2;
    k=(log(y1)-log(y0))/(log(y2)-log(y0));
    y1Pixel=(y2Pixel+(k-1)*y0Pixel)*k;
    yPos(x1)=y1Pixel;
  end
  figure(1);
  plot(xPos,yPos);

  %------------------------End----------------------------

运行结果如下:

用LabVIEW软件显示的曲线效果如下:

 

2.2.4  横轴对数坐标显示,纵轴对数坐标显示

Matlab代码如下:

% X轴对数坐标显示,Y轴对数坐标显示

  clc;
  clear all;
  close all;
  x0Pixel = 0;
  x2Pixel = 10;  %像素点间距
  xPos = zeros(1,10);
  x0 = 1;
  x2 = 10;     % 实际的X轴值,x2Pixel表示离X轴原点的像素点距离
  yPos = zeros(1,10);
  for x1=2:1:9
    k=(log10(x2)-log10(x0))/(log10(x1)-log10(x0));
    x1Pixel=(x2Pixel+(k-1)*x0Pixel)/k;
    xPos(x1)=x1Pixel;
  end

  y0Pixel = 0;
  y2Pixel = 20;  %像素点个数最大值 y2Pixel表示离X轴原点的像素点距离
  y0 = 10;       % 对应于x1 =1;
  y2 = 1000;     % 实际的X轴值,对应于x1=10

  for x1=2:1:9
    y1=10*x1.^2;
    k=(log10(y2)-log10(y0))/(log10(y1)-log10(y0));
    y1Pixel=(y2Pixel+(k-1)*y0Pixel)/k;
    yPos(x1)=y1Pixel;
  end
  figure(1);
  plot(xPos,yPos);

  %---------------------End---------------------------

运行效果如下:

  

用LabVIEW软件显示的曲线效果图如下:

3. 总结:绘制算术坐标或者对数坐标的重点在于根据线性比列或者对数比例确定每个数据点在屏幕上对应的坐标。

 

 

注:转载请注明出处http://www.cnblogs.com/zaishuiyifang006 人生如棋,我愿为卒,行动虽缓,可谁见我后退一步。
原文地址:https://www.cnblogs.com/zaishuiyifang006/p/2678547.html