MATLAB的unique()函数使用: 从一个N×M数值矩阵中,以某一列在出于精度要求,截断小数位后出现重复数值的后处理

在MATLAB中,针对N×M数值矩阵,若某列因精度要求导致小数位截断后出现重复数值,本文介绍了使用unique()函数进行后处理的方法。在VB闭环控制查表场景中,需要确保推力作为自变量的连续性和唯一性。通过unique()函数,可以便捷地提取不重复的行,以满足制表需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目背景:因为最优点的推力和主流率,以及最优点的推力和阳极电流的一一对应关系的稳态编表需要用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是不重复且第一次出现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康冕峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值