MATLAB如何读取用户指定文件名的坐标文件替代手动逐点输入
MATLAB最小二乘直线拟合脚本输入逻辑修改方案
直接替换原脚本里的数据录入代码段即可,修改后不需要手动数点、逐点输坐标,只要输入存了坐标的文件名就能自动加载数据,适配两列空格分隔的文本存储格式:
disp('本程序将对输入数据集执行最小二乘直线拟合'); % 提示用户输入坐标文件名,'s'参数表示读取输入为字符串,不会做表达式求值 filename = input('请输入存储坐标数据的文件名(要带后缀,比如coords.txt):', 's'); % load函数可直接读取空格分隔的纯文本数值文件,返回矩阵格式 coord_data = load(filename); % 简单校验文件格式,避免读错文件导致后续计算报错 if size(coord_data, 2) ~= 2 error('文件格式不对:要求每行是两个空格分隔的数值,依次对应x、y坐标'); end % 拆分x、y向量,自动统计点的总数量 x = coord_data(:, 1)'; y = coord_data(:, 2)'; n_points = length(x); % 加载完成提示,方便用户确认数据量 fprintf('数据加载完成,共读取到%d组坐标点\n', n_points);
关键修改点
- 删掉了原来要求用户输入点总数、循环逐点录入坐标对的逻辑
- 给
input加第二个参数's',直接读取用户输入的文件名字符串,不会把输入内容当MATLAB表达式执行 - 用
load直接读取纯文本坐标文件,完全匹配「每行x、y两个值空格分隔」的格式,不需要额外写逐行解析代码 - 增加基础格式校验,如果文件列数不符合要求会直接报错提示,不会带着错误数据继续运行
- 自动拆分x、y数组、自动统计点总数,变量名和后续原有拟合逻辑完全兼容,不需要修改后面的计算代码
注意:运行脚本时要把坐标文件放到MATLAB当前的工作文件夹里,否则需要输入文件的完整绝对路径才能正常读取。
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

