【matlab】MATLAB数据可视化
之前使用对于数据可视化一直是使用的python进行分析画图的,python语言面向用户确实是很友好的,简单上手,但前段时间为了论文数据图格式,使用python调了好久才弄完。最近学习下matlab,python的画图库也是基于matlab,两者风格完全一样,但是matlab的可视化和交互界面更为友好,调整格式可以直接拖动,简直是神器,因此进行移植。
如有不对之处,欢迎指出。代码如下:
function = findfile(filepath)
namelist = dir( fullfile(filepath,'*.txt'));
k = 1;
file_name_r={{}};
path_name_r={{}};
for i = 1:length(namelist)
if length(namelist) ==1
if not( isfolder( fullfile(filepath,namelist.name) ) )
path_name_r{k} = fullfile(filepath,namelist.name);
file_name_r{k}=namelist.name;
k = k+1;
end
else
if not( isfolder( fullfile(filepath,namelist(i).name) ) )
path_name_r{k} = fullfile(filepath,namelist(i).name);
file_name_r{k}=namelist(i).name;
k = k+1;
end
end
end
path_name = path_name_r;
file_name = file_name_r;
end
function = filetolist(filepath,format,inx)
fid = fopen(filepath,'r+');
list = textscan(fid,format);
fclose(fid);
index = list{1};
data = list{inx};
end
function = str_diffsave(strlist,n)
begin = 0;
for i = 1:length(strlist{1})
if not( strncmp(strlist{1},strlist{2},i) )
begin = i;
break;
end
end
str_diff = [];
for i = 1:length(strlist)
str_diff{i} = strlist{i}(begin:end-n);
end
str_list = str_diff;
end
function = str_equalsave(strlist)
index_end = 0;
for i = 1:length(strlist{1})
if not( strncmp(strlist{1},strlist{2},i) )
index_end = i;
break;
end
end
str = strlist{1}(13:index_end - 1);
end
= findfile(pwd);
legend_name = str_diffsave(filename,20);
tiitle_name = str_equalsave(filename);
ylabel_name = {
'snr',
'TotalSims',
'Time',
'Total error',
'Frame err ratio',
'Undetected error',
'ML error',
'Avg # iteration',
'Avg # iteration correct',
'Avg # iteration wrong',
'Avg decode time',
'Avg decode time correct',
'Avg decode time wrong',
'TotalVavNodeTime',
'TotalChkNodeTime',
'TotalChkNodePrjTime',
'TotalLamdaTime',
'TotalPrjExeNum',
'AVg ChkNodePrjTime',
'AVg exact decode time',
'AVg BP decode time'
};
for x = 4:20
text = [];
index =[];
format = '%f %f %s %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f';
for i = 1:length(pathname)
= filetolist(pathname{i},format,x);
end
ind = cell2mat(index)';
data = cell2mat(text)';
figure(x)
semilogy((ind(1,:)),data(1,:),'r-.',(ind(2,:)),data(2,:),'c-+',(ind(3,:)),data(3,:),'k-*','Linewidth',3.0);
set(gca,'fontsize',16);
set(gcf,'color','white');
title(,'Fontsize',16,'Interpreter','none');
xlabel('E_b/N_0(dB)','fontsize',16);
%ylabel('Average Decoding Time(Sec.)','fontsize',16);
ylabel(ylabel_name{x},'fontsize',16);
%ylabel('Avg decode time/s','fontsize',16);
h1=legend(legend_name{1},legend_name{2},legend_name{3});
%h1=legend('C1:FL-LSA','C1:HL-LSA','C1:NS-LSA');
set(h1,'FontSize',12);
grid on;
end 谢谢分享 谢谢分享,学习一下 谢谢分享,学习一下 没太明白您的意思,是不是说在python里做数据处理然后将结果导入到matlab中绘图?看代码好像是这样的。
如果是发论文,看出版社要求,有的规定比较严,指定了绘图软件比如Origin,对图表中的字体数字大小等都有明确要求。
如果是毕业论文,我倒是觉得matlab是非常好的绘图处理软件,尤其是可以把图表导出SVG矢量图,配合latex插入论文中,效果出色! 谢谢分享,学习了。 我一开始也是各种找代码画图表,最后发现,还是EXCEL来作图表好,数据没有就生成数据给EXCEL,实在不行,可以直接连接各种数据源,还有Power Query或第三方连接库,
作图的目的是分析数据,得出结论(make a decision), 如果把大量的精力放在画图上,各种调整参数,本末倒置
页:
[1]