• Matlab提取excel数据及处理的实操举例


    实现目的

    当excel数据量庞大的时候,如果采用人工处理数据的方法就会成为非常出力不讨好的事,既容易出错,又容易抑郁。

    利用matlab处理成为既简单又高效的方式。

    例如,以GD32F7xx系列的管脚复用表格为例,在169x19的excel表格中:

    如何快速得到UART7_RX所有对应的管脚及AF值,并将信息以数组形式输出。

    相关函数介绍:xlsread

    xlsread 是数学软件matlab中读取Excel文件中数据的一个函数。即从当前程序所在文件夹里,按照函数中的参数指定的范围,从单元格开始读取文件,返回数据。

    1num = xlsread(‘filename’)

    从指定文件夹读取,比如说num=xlsread(‘data.xls’),即从当前程序所在文件夹里,从A1单元格开始读取,读取data.xls文件,把数据返回给num

    2num = xlsread(‘filename’,‘sheet’)
    选择所在的sheet,比如说’sheet1’

    3num = xlsread(‘filename’, ‘range’)
    所在的单元格范围,比如说range=‘A1:A8’

    4num = xlsread(‘filename’, ‘sheet’, ‘range’)
    sheet
    和单元格范围同时限制。

    5[num, txt]= xlsread(‘filename’, …)
    把返回的数据与文本分开保存。

    6[num, txt, raw] = xlsread(‘filename’, …)
    分开保存的同时,有把numtxt保存到raw里,形成一个单一变量。

    其中,num是数值型变量且为矩阵,txt是字符型变量且为细胞数组,raw既含数值型变量又含字符型变量,raw是细胞数组。

    相关函数介绍:strcmp相关

    1.strcmp(s1, s2):用于比较字符串s1、s2是否相等,如果相等,返回结果1,否则返回0;

    例如:

    TF=strcmp(s1,s2);

    s1和s2是字符串,比如:s1=‘hello’,s2='matlab'。

    如果s1和s2是一致的,则返回值TF=1,否则,TF=0。

    TF=strcmp(s,c);

    s是一个字符串,c是一个cell数组,c的元素全是字符串,比如:s=‘hello’,c={'hello','matlab';'HELLO','matlab'}。

    返回值TF是一个和c有相同长度的数组,TF的元素是1或0。

    把c中的每个元素和s做比较,如果一致,则TF对应位置的元素为1,否则,为0。

    TF=strcmp(c1,c2);

    c1和c2都是cell数组,并且它们具有相同的长度,它们的元素都是字符串,比如c1={'hello','matlab';'HELLO','matlab'};c2={'hello','matlab';'hello','MATLAB'};

    返回值TF是一个和c1或c2有相同长度的逻辑数组,TF的元素是1或0。

    把c1和c2对应位置的元素做比较,如果一致,则TF对应位置的元素为1,否则,为0。

    2.strncmp(s1, s2, n):用于比较字符串s1、s2前n个字符是否相等,如果相等,返回结果1,否则返回0;

    3.strcmpi(s1, s2):在忽略字母大小写的前提下,比较字符串s1、s2是否相等,如果相等,返回结果1,否则返回0;

    4.strncmpi(s1, s2, n):在忽略字母大小写的前提下,比较字符串s1、s2前n个字符是否相等,如果相等,返回结果1,否则返回0。

    实操举例

    1.定义输出的数组,提取excel文件内容并生成txt数组:

    1. >> OUTPUT=cell(10,2);
    2. >> [~,txt] = xlsread('D:\aaa\bbb\ccc.xlsx');

    此时可以看到变量:

    2.编辑转换函数:

    遍历所有内容并对比,找到UART7_RX所有对应的管脚及AF值,并将信息以数组形式输出。

    1. function OUTPUT=excel_read(specified_txt)
    2. [~,txt] = xlsread('D:\aaa\bbb\ccc.xlsx');
    3. m = 1;
    4. OUTPUT=cell(10,2);
    5. for i=1:169
    6.     for j=1:19
    7.         if strcmp(txt(i,j),specified_txt)
    8.             OUTPUT(m,1)=txt(i,1);
    9.             OUTPUT(m,2)=txt(1,j);
    10.             m=m+1;
    11.         end
    12.     end
    13. end
    14. end

    3.调用函数:

    >> OUTPUT=excel_read('UART7_RX')

    可以得到如下结果:

    即:UART7_RX所有对应的管脚及AF值,并将信息以数组形式输出。

  • 相关阅读:
    又拍云之 Keepalived 高可用部署
    测试 开发 5 年从外包 18K 跳槽去字节 28K+12,啃完这份笔记你也可以
    工业级成熟航运港口人工智能产品全球前三船公司及港口码头落地,中国上海人工智能独角兽中集飞瞳全球应用最广规模最大最先进港航AI企业
    k8s之pod流量分析
    分布式限流不会用?一个注解简单搞定
    请看绝命碰撞
    共话龙蜥:中国操作系统到底有没有角力世界舞台的实力?
    IDEA热部署
    51单片机内部外设:实时时钟(SPI)
    百度飞桨PaddleOCR的简单使用
  • 原文地址:https://blog.csdn.net/qq_30095921/article/details/140358945