首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MATLAB中的跳读字符串

MATLAB中的跳读字符串
EN

Stack Overflow用户
提问于 2010-03-26 18:52:01
回答 2查看 2.9K关注 0票数 0

MATLAB中是否有简单的命令来防止程序在读取字符时崩溃?

我使用xlsread读取(20400)矩阵数据,第一行和第一列被忽略,因为它们有标题,因此:

代码语言:javascript
运行
复制
data = xlsread ('C:\file.xls') 

结果data的大小为19 399。

我有一个问题,一些单元格丢失了数据,它被写入了“缺失”,而在一些数据集上,标题重新出现在中间。

有没有一种方法可以跳过这些字符而不让程序崩溃,而我必须在excel中打开文件并删除这些字段?

谢谢

抱歉更新得太晚了。下面是我使用的代码:

代码语言:javascript
运行
复制
[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));

我得到的错误是:

代码语言:javascript
运行
复制
??? 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));

这是由于我选择的文件中的字符。当我手动删除它们时,它会消失。

EN

Stack Overflow用户

发布于 2010-03-26 19:32:13

具体而言,我不知道是什么问题导致了程序崩溃,因为您还没有告诉我们如何处理从XLSREAD获得的数据。不过,也许这会有帮助..。

您可以让XLSREAD以下列方式从文件中返回数字、文本和原始数据:

代码语言:javascript
运行
复制
[numData,txtData,rawData] = xlsread('C:\file.xls');

对于此调用语法:

  • 变量numData将只包含电子表格中的数值。任何包含非数字数据的单元格都设置为非数
  • 变量txtData将只包含电子表格中的文本数据。任何包含数字数据的单元格都设置为空字符串('')。
  • 变量rawData将包含电子表格中所有未处理的原始单元格内容,包括数字和文本。

也许您可以对数据使用这些不同的表单来帮助您处理其他字符字段。我猜想,您的部分问题可能是由于您正在处理的数字数据中可能包含非数值(在文件中有文本的地方),而且您的处理步骤没有考虑到这一点。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2525903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档