0. 写在前面的话
无论是Simulink自带的示波器导出到Figure,还是使用“To workpace”将数据导入到工作区绘制Figure,当存在大量数据时,数据的保存、分类、可视化都变得复杂。
一种常见的情况时,在不同工况下均有不同的数据。
例如:Condition1时,有3组数据分别为Data1、Data2、Error。Condition2时,有3组数据分别为Data1、Data2、Error
针对这种情况,为了便于后期数据的保存和可视化,本文将每种不同工况下的原始数据、Figure图、eps图放置于一个文件夹中。既,文件夹结构如下:
<项目>
? ? ? ? <工程代码>
? ? ? ? <数据和图片>
? ? ? ? ? ? ? ? <Condition1>
? ? ? ? ? ? ? ? <Conditon2>
? ? ? ? ? ? ? ? <Condition3>
???????? <论文撰写
?此外,还给出了将工作区数据保存至指定路径的相关代码,以及批量绘制并保存图片的相关代码。
1. 工作区数据保存到指定路径
conditionname='Condition1\'; %待新建的文件夹
pathname='D:\Figure_Data\'; %路径
mkdir Figure_Data Condition1; %新建文件夹
save([pathname,conditionname,'Data.mat'],'Data');%数据存储
?该代码文件保存至<工程代码>
2. 绘制并保存Figure图,并将其保存为eps,600dpi图片
function Get_Figure(condition,flag)
% % % % % 数据路径 % % % % % % % % % % % % % % % %
path='D:\Figure_Data\';
dataname={'Data1.mat',
'Data2.mat',
'Error1.mat'};
datapath=[path,condition,'\',dataname{flag,:}];
% % % % % 常用变量定义 % % % % % % % % % % % % % % % % % % %
figsize=[8,5];%Figuer大小
picturesize=[0.8,0.65]; %图片位置
savepath={path,condition,'\','Data1_',
path,condition,'\','Data2_',
path,condition,'\','Data3_'};
% % % % % 数据拆分读取 % % % % % % % % % % % % % % % % % % %
temp=load(datapath);
% % % % % % Real_Data % % % % % % % % % % % % % % % % % % % % %
if flag==1
data=temp.Data1.Data;
time=temp.Data2.Time;
[n,s]=size(data);
% % % % % Figure绘制 % % % % % % % % % % % % % % % % %
yla={'A','B','C','D'};
for i=1:s
figure(i)
p(i)=plot(time,data(:,i),'k','linewidth',1);
axisdata=[0,20000,2,5];
if i==2
axisdata=[0,20000,0,1];
end
SetFigure(axisdata,figsize,picturesize,yla{:,i});
sp=[savepath{flag,:},yla{1,i}];
saveas(p(i),[sp,'.fig']);% Figure 保存
print([sp,'.eps'],'-deps','-r600');
end
end
% % % % % % % Estimate_Data % % % % % % % % % % % % % % % % % % % %
if flag==2
data=Data2.Data;
time=Data2.Time;
[n,s]=size(data);
% % % % % Figure绘制 % % % % % % % % % % % % % % % % %
yla={'E','F','G'};
for i=1:s
figure(i)
p(i)=plot(time,data(:,i),'k','linewidth',1);
axisdata=[0,20000,2,5];
if i==1
axisdata=[0,20000,0,1];
end
SetFigure(axisdata,figsize,picturesize,yla{:,i});
sp=[savepath{flag,:},yla{1,i}];
saveas(p(i),[sp,'.fig']);% Figure 保存
print([sp,'.eps'],'-deps','-r600');
end
end
% % % % % % % Estimate_Error % % % % % % % % % % % % % % % % % % % % % % %
if flag==3
data=Error.Data;
time=Error.Time;
[n,s]=size(data);
% % % % % Figure绘制 % % % % % % % % % % % % % % % % %
yla={'H','I','J'};
for i=1:s
figure(i)
p(i)=plot(time,data(:,i),'k','linewidth',1);
axisdata=[0,20000,-0.00001,0.00001];
SetFigure(axisdata,figsize,picturesize,yla{:,i});
sp=[savepath{flag,:},yla{1,i}];
saveas(p(i),[sp,'.fig']);% Figure 保存
print([sp,'.eps'],'-deps','-r600');
end
end
end
该代码文件保存至<数据和图片>
3. 效果展示
?4. 写在后面的话
?第2小节中,包含有SetFigure函数,该函数的主要功能为设置Figure大小、位置、坐标轴等,此处没有具体给出。完整代码可点击该链接有偿下载。如果想白嫖,可点赞收藏后私聊作者。作者看到后既回复。
|