我在matlab中设计了一个函数,它允许我(或者我认为)从文本文件中提取数据(至少在开头)
0
我的想法是将我的字母与其位置与向量匹配(因为只有M旁边的值对我来说真的很有趣),并在向量中得到另外两个数字。 治疗的结束效果很好,但是我在代码结尾处得到的值有时远非真实的。
例如,代替[0 0.013 0.1 0.236 0.425 0.666 0.958],得到[0 0.013 0.1010 0.237 0.426 0.666 0.959]。 这不是一个问题,第一列的问题要严重得多:而不是119的最大值,它不会达到90.我有一个与整数一起正常工作的代码,但现在我已经使用浮动它每次都失败。
我将尝试仅显示代码的有趣部分:
G1 50
G2 50
M-0.35 0
M-0.05 0.013
M3.3 0.1
M9.75 0.236
M17.15 0.425
M25.85 0.666
M35.35 0.958
我想要的精确度是保持[M108.55 23.759]等值最多3位数。
提前感谢您,如果我未能仅提供包含问题的部分代码,请随时询问任何信息。
答案 0 :(得分:0)
将您的代码修改为:
nom_essai='test.txt';
fid1 = fopen(nom_essai, 'rt');
tableau = textscan(fid1, '%s %f ', 'HeaderLines', 1, 'CollectOutput', true); % Change to %f not to miss significative figures
colonne_force = tableau{1}; %on recupere la premiere colonne
colonne_deplacement=tableau{2}; %on recupere la seconde colonne
% Check if has M
hasM = cellfun(@(x) any(x == 'M'), colonne_force);
column2 = colonne_deplacement(hasM);
column1 = colonne_force(hasM);
column1 = cellfun(@(x) str2double(x(2:end)), column1); % delete M and convert to double
保留精度: