值为“。”不是从excel文件导入的

时间:2017-06-03 23:35:30

标签: excel matlab

我有一个excel文件,如下所示:

excel file in png

每次我的文件都包含这样的行:2 1.258 4.587 6.325时,我的代码不会读取.,的数字,对于给定的行,只有2是进口。

这是我的代码(虽然我的文件包含小数值,但效果不错):

Xtrain1 = xlsread('mma_kag\train1.xlsx','B:F'); 

错误是:

  

数据点的维度必须大于0

这意味着它不会读取文件而我已经检查过它。那是[]。 如何解决这个问题?

以下是excel文件的link

1 个答案:

答案 0 :(得分:0)

单元格中的数字被视为文本,因此被视为错误。它与数字不是整数无关。有两种方法可以解决这个错误。

Excel方法

  • 选择所有单元格(按 Ctrl + A )。
  • 然后点击this。这将打开一个下拉菜单。
  • 现在选择转换为数字
  • 保存Excel文件( Ctrl + S )。 (如果需要,请保留前一份的副本)

excel approach

有关详细信息,请阅读以下主题:
Fix text-formatted numbers by applying a number format

MATLAB方法:
使用the third output of xlsread并将文本转换为双精度,如下所示:

[~, ~, Xtrain1] = xlsread('mma_kag\train1.xlsx','B:F');
Xtrain1 = str2double(Xtrain1); %Converting the strings in the cell to double

修改 如果您的文件中的数字是任意分散的文本(如您上传的新文件),则需要xlsread的第一和第三输出。如下所示:

[tmp,~, Xtrain1] = xlsread('train1.xlsx'); %Select the range as per your need if necessary
Xtrain1 = str2double(Xtrain1);       
%Above line will convert the text into numbers and the numbers will be converted to NaNs 
Xtrain1(isnan(Xtrain1))=tmp(~isnan(tmp));  
%Above line retrieves the numbers from `tmp` & stores them in `Xtrain1`