项目背景:因为最优点的推力和主流率,以及最优点的推力和阳极电流的一一对应关系的稳态编表需要用MATLAB拟合,所以本小节主要是介绍工作过程中发现的MATLAB的 对一列存在小数点后有着固定有效位,数值重复数字的剔除。VB项目闭环控制查表时候推力是自变量需要保证连续且唯一固定间隔的数列。但是这些数据拟合产生的过程中,阳极主流率才是自变量具有固定大小的间隔连续的数组。
两种思路:1.去掉数值重复的行、2.提取数值不重复的行 MATALB使用unique()函数完成方式2更便捷容易些。
待处理大数据如上图所示:F_m_m矩阵中第2列是精度为0.001,步进连续递增的自变量m_m,第一列是F数据,格式是双精度。如果对F进行精度转换成0.001,就会产生大量数值重复大小的行。我们制表要求F为自变量,精度0.001步进递增,应该怎么办呢?
%%工作区的数组F3是双精度格式,小数点后位数超出0.001对其进行处理
%%把F3原始数值赋值给变量a,并用roundn截断到0.001位,产生了重复的数值
a=F3;
b=roundn(a,-3);
%%提取b中重复的行号
%% c中不为0的序号表示b中有重复数值的行号
for i = 1:length(b)
if(b(i+1)-b(i))==0
c(i)=i;
end
end
%%例如提示:索引超出数组元素的数目(21301),我们手动补全末尾的几项
d =[0 21301];
c =[c d]; %补全c,这种格式要求c d都是MATLAB中的行向量
%%两种思路,经过研究提取不重复的行号相对比较简单,正难则反。
%% unique函数返回行号的重载用法,c1是不重复且第一次出现