利用MATLAB将CSV文件画图并导出

科研中,很多数据来源于CSV文件,那么我们就需要使用CSV文件作图,并到处高清图形。本篇我是用MATLAB作图并导出,供学习。

1.了解CSV文件

使用.csv文件是常用的一种数据处理办法,一般示波器数据使用CSV文件保存比较方便。CSV文件中有文本,有数据,如下图。这是某示波器输出的典型CSV文件内容,上面介绍了示波器的各种设置参数,下面是数据。

图1

 我们的目标就是用这个文件将数据画图,使用MATLAB。

2.导入数据

由于CSV文件中有文本,有数字,这里我们使用readmatrix导入。

但是我们对文本不感兴趣,只需要导入的数字信息保存就行,可以将导入的str类型转换为double类型。另外,你需要知道画图时所使用的数据在哪些行、哪些列,导入原始数据。

%本代码用于画试验波形图
clear;clc;
%% INPUT
INPUT = readmatrix('SaveOnEvent_ch1_20240806092932084.csv', 'OutputType', 'string');
INPUT = str2double(INPUT);
INPUT_T = INPUT(:,4); %第四列为时间
INPUT_F = INPUT(:,5); %第五列为测量值

这里已经成功导入原始数据了, NPUT_T为时间,INPUT_F为测量值。

3.数据处理

由于试验时,某些变量可能需要进一步处理,比如时间需要由s变为us,电压值可能需要由V变为kV,因此这里进行处理。 

%% DATA PROCESSING
T = INPUT_T .* 10^6; %时间由s变为us
U = INPUT_F; %如若变换单位,变换电压电流可操作

4.做画图准备

大家记住,MATLAB使用plot画图有三要素:图窗,坐标轴,曲线。任何图就是这三要素产生出来的,要改图的什么也可以改这三要素的。

①图窗:默认名字为gcf,这里改为U1

U1 = figure(1);%给图窗命名为current(默认为 gcf)
set(U1,'unit','normalized','position',[0.2,0.2,0.6,0.4]);%设置图窗大小

 ②坐标轴:默认名字为gca,这里改为U2

U2=axes('Parent',U1);%给坐标轴命名为U2,其中【Parent为父容器,即承载坐标轴的图窗】(坐标轴名字默认为gca)

③曲线: 命名为U3

U3=plot(T,U,'color',[0,0,0],'linewidth',1);%画图,并给线条命名为U3

 完整代码:

%% 准备画图,分别给图窗、坐标轴、曲线命名,分别命名为1、2、3
U1 = figure(1);%给图窗命名为current(默认为 gcf)
set(U1,'unit','normalized','position',[0.2,0.2,0.6,0.4]);%设置图窗大小
U2=axes('Parent',U1);%给坐标轴命名为U2,其中【Parent为父容器,即承载坐标轴的图窗】(坐标轴名字默认为gca)
U3=plot(T,U,'color',[0,0,0],'linewidth',1);%画图,并给线条命名为U3
% hold on%把图窗钉起来,下次继续在此基础上画图
% box off%关闭边框

5.更改三要素

我如果想改图窗属性、坐标轴属性、曲线属性,就可以分别去改了,不需要再改前面的代码了。例如这里我要改坐标轴的一些参数。具体怎么改可以网上查询。

%% 设置坐标轴格式
xlim([-100 600])%设置x坐标轴范围
ylim([-1000 1000])%设置y坐标轴范围
xlabel(U2,'\fontname{宋体}{时间}/\fontname{times}{\mus}','FontSize',14,'FontName','times');
ylabel(U2,'\fontname{宋体}{电压}\fontname{times}{/V}','FontSize',14,'FontName','times');
set(U2,'ytick',(-1000:200:1000),'xminortick','on'); %调整坐标轴的格式之坐标刻度
% U2.YAxis.MinorTickValues = -120:10:100;%设置y轴次刻度线一格多少

完整代码: 

%% 设置坐标轴格式
xlim([-100 600])%设置x坐标轴范围
ylim([-1000 1000])%设置y坐标轴范围
xlabel(U2,'\fontname{宋体}{时间}/\fontname{times}{\mus}','FontSize',14,'FontName','times');
ylabel(U2,'\fontname{宋体}{电压}\fontname{times}{/V}','FontSize',14,'FontName','times');
set(U2,'ytick',(-1000:200:1000),'xminortick','on'); %调整坐标轴的格式之坐标刻度
% U2.YAxis.MinorTickValues = -120:10:100;%设置y轴次刻度线一格多少

%下面代码是为了去掉上面和右面的刻度线
box off
axes_1=axes('Position',get(U2,'Position'),...%U2可变
    'Color','none',...
    'XAxisLocation','top',...
    'YAxisLocation','right',...
    'XColor','k','YColor','k');
set(axes_1,'YTick', []);
set(axes_1,'XTick', []);

6.导出图形

使用exportgraphics函数。

%% 导出图像为png
exportgraphics(U1,'U.png','Resolution',600)%导出图窗,设置分辨率为600

7.完整代码如下 

%本代码用于画试验波形图
clear;clc;
%% INPUT
INPUT = readmatrix('SaveOnEvent_ch1_20240806092932084.csv', 'OutputType', 'string');
INPUT = str2double(INPUT);
INPUT_T = INPUT(:,4); %第四列为时间
INPUT_F = INPUT(:,5); %第五列为测量值

%% DATA PROCESSING
T = INPUT_T .* 10^6; %时间由s变为us
U = INPUT_F; %如若变换单位,变换电压电流可操作

%% 准备画图,分别给图窗、坐标轴、曲线命名,分别命名为1、2、3
U1 = figure(1);%给图窗命名为current(默认为 gcf)
set(U1,'unit','normalized','position',[0.2,0.2,0.6,0.4]);%设置图窗大小
U2=axes('Parent',U1);%给坐标轴命名为U2,其中【Parent为父容器,即承载坐标轴的图窗】(坐标轴名字默认为gca)
U3=plot(T,U,'color',[0,0,0],'linewidth',1);%画图,并给线条命名为U3
% hold on%把图窗钉起来,下次继续在此基础上画图
% box off%关闭边框

%% 设置坐标轴格式
xlim([-100 600])%设置x坐标轴范围
ylim([-1000 1000])%设置y坐标轴范围
xlabel(U2,'\fontname{宋体}{时间}/\fontname{times}{\mus}','FontSize',14,'FontName','times');
ylabel(U2,'\fontname{宋体}{电压}\fontname{times}{/V}','FontSize',14,'FontName','times');
set(U2,'ytick',(-1000:200:1000),'xminortick','on'); %调整坐标轴的格式之坐标刻度
% U2.YAxis.MinorTickValues = -120:10:100;%设置y轴次刻度线一格多少

%下面代码是为了去掉上面和右面的刻度线
box off
axes_1=axes('Position',get(U2,'Position'),...%U2可变
    'Color','none',...
    'XAxisLocation','top',...
    'YAxisLocation','right',...
    'XColor','k','YColor','k');
set(axes_1,'YTick', []);
set(axes_1,'XTick', []);

%% 导出图像为png
exportgraphics(U1,'U.png','Resolution',600)%导出图窗,设置分辨率为600

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值