使用 GUI matlab 读取十进制数

问题描述 投票:0回答:1

我正在使用 MATLAB 开发一个用户界面,它允许浏览和加载文本文件并显示一些曲线。我面临一个问题,我的文件文本是一组十进制数字,MATLAB 将这些数字读取为两列。

这是一个示例:您可以在这里找到我正在处理的文件:

enter image description here

运行此代码后:

[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') 的结果,问题出现了!

enter image description here

所以我现在有 12 列而不是 6 列!你能帮我吗? 我尝试了

strrep(data,',','.')
但不起作用!

matlab text-files
1个回答
0
投票

由于您使用逗号,对于小数点,您需要首先将整个文件作为字符串加载,将

,
替换为
.
,然后您可以使用
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);
© www.soinside.com 2019 - 2024. All rights reserved.