MATLAB中的xlsread函数需要Excel吗?

Does the xlsread function in MATLAB require Excel?

我有两台具有相同 MATLAB 代码和相同 Excel 文件(.csv 格式)的计算机。该代码仅适用于 Excel 的机器。我想不出任何其他区别。

计算机需要 Excel xlsread 才能工作吗?我得到的错误是无法识别的格式。

如果是这种情况,是否有任何简单的解决方法而不需要 Excel?

编辑:似乎不需要 Excel。也许问题是文件是 .csv?毕竟是格式错误。我无法想象为什么相同格式的文件在我的另一台计算机上工作。

已解决:.csv 文件是问题所在。对于读取.csv文件,事实证明matlab的importdata()函数真的是万能的

我从来没有在没有Excel的电脑上使用过xlsread,所以我不能确定。但是根据documentation Excel是没有必要的;你只会失去一些功能:

num = xlsread(filename,sheet,xlRange,'basic') reads data from the spreadsheet in basic import mode. If your computer does not have Excel for Windows®, xlsread automatically operates in basic import mode, which supports XLS, XLSX, XLSM, XLTX, and XLTM files.

basic mode is the default for computers without Excel for Windows. In basic mode, xlsread:

  • Reads XLS, XLSX, XLSM, XLTX, and XLTM files only.

  • Does not support an xlRange input when reading XLS files. In this case, use '' in place of xlRange.

  • Does not support function handle inputs.

  • Imports all dates as Excel serial date numbers. Excel serial date numbers use a different reference date than MATLAB® date numbers.

所以,问题可能在于您调用 xlsread 时使用了一些 basic 模式不支持的选项。

xlsread(filename,sheet,xlRange,'basic') 无需在您的计算机上安装 Excel。

其他附加参数将需要 Excel 安装。

虽然 Matlab 本身可以导入字符分隔文件。

根据this page

If your system has Excel® for Windows® installed, including the COM server (part of the typical installation of Excel):

All MATLAB® import options support XLS, XLSX, XLSB, XLSM, XLTM, and XLTX formats.

...

If your system does not have Excel for Windows installed, or the COM server is not available:

All MATLAB import options read XLS, XLSX, XLSM, XLTM, and XLTX files.

但是,如果您只是想导入逗号分隔的 ASCII 文件,那么 xlsread 就太过分了,而且速度非常慢。如果您的数据是纯数字,请改用 csvread or dlmread. If your data is mixed, then use textscan