我正在使用 MATLAB 开发一个用户界面,它允许浏览和加载文本文件并显示一些曲线。我面临一个问题,我的文件文本是一组十进制数字,MATLAB 将这些数字读取为两列。
这是一个示例:您可以在这里找到我正在处理的文件:
运行此代码后:
[filename pathname] = uigetfile({'*.txt'},'File Selector');
fullpathname = strcat(pathname,filename);
text = fileread(fullpathname); %reading information inside a file
set(handles.text6,'string',fullpathname)%showing full path name
set(handles.text7,'string',text)%showing information
loaddata = fullfile(pathname,filename);
xy = load(loaddata,'-ascii','%s');
t = xy(:,1);
i = xy(:,3);
handles.input1 = i;
handles.input2 = t;
axes(handles.axes1);
plot(handles.input1,handles.input2)
曲线看起来很厉害,所以我使用命令窗口检查了 xy= load(loaddata,'-ascii') 的结果,问题出现了!
所以我现在有 12 列而不是 6 列!你能帮我吗? 我尝试了
strrep(data,',','.')
但不起作用!
由于您使用逗号,对于小数点,您需要首先将整个文件作为字符串加载,将
,
替换为 .
,然后您可以使用 str2num
将整个文件转换为数值数组
% Read the entire file into memory
fid = fopen(loaddata, 'rb');
contents = fread(fid, '*char')';
fclose(fid);
% Replace `,` with `.`
contents = strrep(contents, ',', '.');
% Now convert to numbers
data = str2num(contents);