Matlab如何批量读取Excel数据?科研效率UpUp第3期

上一篇文章中,讲了如何批量统计一组Excel数据中多个站位所有物种的数量之和Matlab如何高效统计多站数据中各站目标总数?科研效率UpUp第2期

进一步,假如我们有多组Excel数据,也就是多个Excel表格,该怎么操作呢?

本期结合第1期内容(Matlab如何批量读取txt数据?科研效率UpUp第1期),分享一下如何通过Matlab批量读取Excel数据、统计多个站位所有物种的数量之和并将其可视化:

值得一提的是,本期的重点在于批量读取Excel数据,统计多个站位所有物种的数量之和、可视化仅为读取数据后的一种应用

特别提示:如果你也有好的效率提升方法,欢迎评论区分享~


​1.数据格式

数据格式如图所示:

2.批量读取并可视化

通过‘dir’命令列出所需路径下所有xlsx文件:

file_read=dir('D:\底栖动物\*.xlsx');

利用‘readtable’命令读取数据:

currentFname = strcat('D:\底栖动物\',filenames{ii});data = readtable(currentFname,'VariableNamingRule','preserve');

按照第2期内容统计多个站位所有物种的数量之和,通过‘bar’绘制单组多色柱状图:

GO = bar(x,sumnum,0.7);

3.完整代码

完整代码如下:

%% 列出文件夹对应内容file_read=dir('D:\底栖动物\*.xlsx');filenames={file_read.name}';file_length=length(file_read);%% 批量读取、统计各站位个体总数并可视化数据% 颜色定义map = TheColor('sci',511);% 图片尺寸设置(单位:厘米)figureUnits = 'centimeters';figureWidth = 20;figureHeight = 16;% 窗口设置figureHandle = figure('Color','w');set(gcf, 'Units', figureUnits, 'Position', [0 0 figureWidth figureHeight]);% 绘制t = tiledlayout(3,3);for ii = 1:file_length    % 读取    currentFname = strcat('D:\底栖动物\',filenames{ii});    data = readtable(currentFname,'VariableNamingRule','preserve');    B = data.("监测站位");    C = data.("个体数");    % 统计各站位个体总数    [ia,ib,ic] = unique(B);    sumnum = [];    for i = 1:length(ia)        num = C(find(ic==i),1);        sumnum(i) = sum(num);    end    % 可视化    nexttile(ii)    x = 1:length(ia);    GO = bar(x,sumnum,0.7);    hTitle = title(filenames{ii}(1:4));    GO.FaceColor = 'flat';    for i = 1:length(ia)        GO.CData(i,:) = map(i,:);    end    set(gca, 'box','off',...        'LineWidth',1,...        'XGrid', 'off', 'YGrid', 'on', ...        'TickDir', 'out', 'TickLength', [.015 .015], ...        'YScale','log')endt.TileSpacing = 'compact';t.Padding = 'compact';%% 图片输出figW = figureWidth;figH = figureHeight;set(figureHandle,'PaperUnits',figureUnits);set(figureHandle,'PaperPosition',[0 0 figW figH]);fileout = 'test';print(figureHandle,[fileout,'.png'],'-r300','-dpng');

以上。

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值