目前想实现的功能是:输出参数(比如距离、功率等)在某个区间内变化时对应的传输损耗数据,然后进行画图。
暂时实现的是将输出的数据显示在textbox中,然后生成.dat文件。这样的话,后面调用gnuplot作图的时候就只需要使用这个.dat文件就可以了。
所以这一篇博客是介绍怎么用C#产生多组数据显示到textbox中,并将这些数据保存成为一个.dat文件。
1.产生数据并显示
以Hata模型中城市的传输损耗计算为例,让发射频率固定为900MHz,基站天线高度30m,移动台天线高度1m,传输距离范围为1~20km,计算传输损耗值,输出对应数据表到 textbox 中显示。
int f_c = 900; //发射频率
int h_te = 30; //基站天线高度
int h_re = 1; //移动台天线高度
int d; //传输距离
double L;
for (d = 10; d <= 20; d++)
{
L = 69.55 + 26.16 * (Math.Log10(f_c)) - 13.82 * (Math.Log10(h_te)) - (3.2 * (Math.Log10(11.75 * h_re)) * (Math.Log10(11.75 * h_re)) - 4.97) + (44.9 - 6.55 * (Math.Log10(h_te))) * (Math.Log10(d));
Txt_data.Text += d.ToString();
Txt_data.Text += " ";
Txt_data.Text += L.ToString("0.00"); //保留两位小数
Txt_data.Text += "\r\n"; //textbox的换行
}
运行结果:
2.产生.dat文件
实际上是将 textbox 中的数据写到创建的数据文件中。
需要加入引用:
using System.IO;
代码:
FileStream fs = new FileStream("D:\\a.dat", FileMode.Create); //支持文件读写
BinaryWriter bw = new BinaryWriter(fs); //二进制输入
bw.Write(System.Text.Encoding.Default.GetBytes(this.Txt_data.Text));
//转化为二进制写入文件
bw.Flush(); //清理缓冲器
bw.Close();
fs.Close();
使用VC打开a.dat的结果:
3.使用命令窗口对数据进行作图
打开a.dat所在目录
C:\Users\Adninistrator>D:
使用gnuplot命令
D:\>gnuplot
使用数据文件作图:
gnuplot>plot "a.dat" w l
运行结果:
4.下一步的任务
接下来就是要使用C#调用gnuplot进行画图(不使用命令窗口,也不需要输入命令),然后将图像进行保存后,再显示到 C# 中的 picturebox 中就行。