【发布时间】:2010-03-26 18:52:01
【问题描述】:
MATLAB中是否有简单的命令可以防止程序在读取字符时崩溃?
我使用xlsread 读取 (20 400) 矩阵数据,第一行和第一列被忽略
因为它们有标题,所以:
data = xlsread ('C:\file.xls')
结果为 data,大小为 (19 399)。
我有一个问题,一些单元格缺少数据并且它被写为“丢失”,并且在一些数据集上我的标题重新出现在中间。
有没有办法跳过这些字符而不会导致程序崩溃并且我必须在 excel 中打开文件并删除这些字段?
谢谢
抱歉更新晚了。这是我正在使用的代码:
[a,patha]=uigetfile({'*.csv'},'Select the file' ,'c:\Data\2010');
file1=[patha a];
%# get a file ID
fid = fopen(file1,'rt');
newf= textscan(fid, ['%s' repmat('%f',1,27)], 'HeaderLines', 1, 'Delimiter', ',');
fclose(fid) ;
%//Make time a datenum of the first column
time = datenum(newf{1} );
%//Find the difference in minutes from each row
timeDiff = round(diff(datenum(time)*(24*60)));
%//the rest of the data
newf = cell2mat(newf(2:28));
我得到的错误是:
??? Error using ==> cat
CAT arguments dimensions are not consistent.
Error in ==> cell2mat at 81
m{n} = cat(2,c{n,:});
Error in ==> testprogram at 31
pwr = cell2mat(newf(2:28));
这是由于我选择了我的文件中的字符。当我手动删除它们时它消失了
【问题讨论】:
-
xlsread是可用于读取.XLS文件的所有内容。也许您可以使用 Excel 将数据导出为 CSV,然后使用dlmread或textscan?或者,您可以将xlsread放在try-catch块中以避免崩溃。您甚至可以使用range参数一次调用xlsread一行,并让try-catch逻辑跳过包含错误数据的行。 -
好吧,即使是 .txt 和 .csv 我也有同样的问题,当某些行的文件中间有字符时,我该如何阅读它们
-
@Paul:你用的是什么 MATLAB 版本?
-
我有 R2009b,所以它的版本特定?
-
@Paul:如果您告诉我们如何程序崩溃了,将会有所帮助。