matlab读取xls,xlsx数据,返回double数值为空,目标数据为cell类型的数据,如何解决?

在用matlab通过xlsread加载数据时,
按照matlab的xlsread函数用法,则有如下:
[NUM,TXT,RAW]=xlsread(File,Sheet,Range)
· NUM : 双精度(double)矩阵, 读取excel中的数据。
· TXT: celll类型,读取excel中文本内容。
· RAW: cell类型,能同时读取字符或者数字,输出未处理数据。
· File: 带路径的文件名。
· Sheet: 来指定读入excel文件的第几个sheet,为正整数。
· Range: 指定的读取区域,‘A1:D13’ 代表以A1和D13为对角定点的矩形域。
本人在使用xlsread读取数据时,发现读取的NUM返回值为空,如下图1所示,提示读取数据为空;
在这里插入图片描述
后面在网上查询了一下资料,发现问题可以解决,虽然存储的数据是以文本形式存储的数据,但是已正确加载入raw文件中,只是存储的数据为cell格式,因此需要将其转换为double数据类型。只需利用函数

data=cellfun(@str2num,data);%其中data为需要加载的数据,就可将其转换为想要得到的double数据类型

至此,问题完美解决!
2022年9月8日15:23:01 重新完善了一下,由于需要经常处理不同的excel数据类型,可能会面临不同的数据,在处理的时候,判断存储的数据可能为char类型或者double类型,若excel里面的数据为double类型的话,则无法用上述代码实现,因此需要首先判断数据存储的类型,然后根据数据类型将数据转换为对应的数据类型。
简单做了一下判断,来完善该功能

    data=txt(2:end,3);
    if  isnumeric(data{1,1})==0%查看存储的数据类型是否为字符型,若为字符型,则使用如下方式
        data1=str2num(char(data));
    end
    if isnumeric(data{1,1})==1%若为doubel类型,则直接采用cellmat函数
        data1=cell2mat(data);
    end
    ```
    
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值