科学计算统计图表生成
我们在软件开发过程中,少不了的是软件性能的测试和相关报告的编写,软件性能的测试往往会生成大量的数据,我们需要用这些数据生成直观的统计图表并用于报告。
生成统计图表有很多,在这里记录我在 SylixOS 实时性测试过程中用到的方法。
SylixOS 实时性测试我做过两种类型:
- 在 SylixOS 代码关键处加入 GPIO 引脚输出高低电平的代码,运行时利用示波器测量 GPIO 引脚电平变化的时间,计算机端运行 matlab 通过 USB 连接示波器收集时间数据,matlab 再将这些数据绘制成统计图表;
- 利用 cyclictest 测试,cyclictest 会生成统计数据,将统计数据保存为文件,计算机端用 gnuplot 以文件作为输入绘制成统计图表。
方法一示例代码如下:MSO1000Z = visa('ni','USB0::0x1AB1::0x04CE::DS1ZA154902817::INSTR');
MSO1000Z.InputBufferSize = 2048;
fopen(MSO1000Z);
N = 10000;
delay{1} = 1;
delay{N} = 6;
for i=2:N-1
fprintf(MSO1000Z, ':MEASure:STATistic:ITEM? CURRent,RDELay,CHANnel1,CHANnel2' );
value = fgets(MSO1000Z);
delay{i} = str2double(value) * 1000000;
end
fclose(MSO1000Z);
delete(MSO1000Z);
clear MSO1000Z;
new_delay = cell2mat(delay);
x = sort(new_delay);
y = normpdf(x, mean(x), 0.1);
subplot(211);
plot(x, y);
xlabel('SylixOS响应时间(us)');
生成的统计图表如下:
方法二示例代码如下:#!/bin/bash
gnuplot << FFF
set terminal png truecolor
set output "sylixos_linux+rt_100w.png"
set xrange ["0" : "40" ]
set grid
set title 'Without pressure latency statistics'
set xlabel 'Latency(us)'
set ylabel 'Times'
plot "up/sylixos_100w.txt" with lines, "up/linux+rt_100w.txt"with lines
FFF
echo "the pic have created, named sylixos_linux+rt_100w.png"
exit 0
生成的统计图表如下:
有了几个两种方法,以后再也不用担心统计图表应该怎么生成了:-)