【问题标题】:reading decimal number with GUI matlab用 GUI matlab 读取十进制数
【发布时间】:2026-01-23 21:30:01
【问题描述】:

我正在使用 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,',','.') 但它不起作用!

【问题讨论】:

  • 所以你的问题是关于解析文件?您如何发布 actual 文件内容并仅显示相关的代码行。这与 GUI 无关。
  • 您好,我现在编辑了我的问题以使其更清楚,您可以检查一下:)
  • 您可以将实际数据粘贴到问题中而不是发布屏幕截图吗?

标签: matlab text-files


【解决方案1】:

由于您使用逗号,对于小数点,您需要首先将整个文件作为字符串加载,将, 替换为.,然后您可以使用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);

【讨论】:

  • @EmnaAmeur 如果这对您有用,请考虑将其标记为解决方案