概述
clear all;
clc;
format short
abit = 1 / 5e10;
xyz = [
1.0 18.0 -24.37
1.0 18.3 -24.73
1.0 18.4 -24.68
1.0 18.6 -24.6
1.0 18.7 -24.56
1.0 18.9 -24.39
1.0 19.0 -24.28
1.0 19.2 -24.3
1.0 19.3 -24.36
1.0 19.4 -22.57
1.0 19.6 -22.51
1.0 19.7 -22.39
1.0 19.8 -22.34
1.0 20.0 -22.28
1.0 20.0 -22.28
1.0 20.1 -22.3
1.0 20.2 -22.4
1.0 20.3 -22.41
1.0 20.5 -22.45
1.0 20.6 -22.38
1.0 20.7 -22.42
1.0 20.8 -22.44
1.0 20.9 -22.51
1.1 18.0 -22.52
1.1 18.1 -22.49
1.1 18.2 -22.36
1.1 18.3 -22.41
1.1 18.4 -22.43
1.1 18.5 -22.5
1.1 18.6 -22.43
1.1 18.7 -22.46
1.1 18.8 -22.47
1.1 18.9 -22.41
1.1 19.0 -22.38
1.1 19.1 -22.39
1.1 19.2 -22.42
1.1 19.3 -22.56
1.1 19.4 -22.48
1.1 19.5 -22.52
1.1 19.6 -22.48
1.1 19.7 -22.43
1.1 19.8 -22.43
1.1 19.9 -22.42
1.1 20.0 -22.43
1.1 20.1 -22.37
1.1 20.2 -22.36
1.1 20.3 -22.49
1.1 20.4 -22.49
1.1 20.5 -22.37
1.1 20.6 -22.31
1.1 20.7 -22.28
1.1 20.8 -22.45
1.1 20.9 -22.35
];
% xyz 元始残缺数据
% data 补齐后的数据
mark = [];
% mark 记录所有原始列上需要补数据的位置
data = [xyz(1,1) xyz(1,2) xyz(1,3)]; % 把第一个数据存到data中
last = [xyz(1,1) xyz(1,2) xyz(1,3)];% 存放上一个插入data的原始数据
[row col] = size(xyz);
% 依次考虑将把第二个到最后一个数据存到data中
for i = 2:1: row
now = [xyz(i,1) xyz(i,2) xyz(i,3)]; % 当前考虑存到data中的原始数据
dy = now(2) - last(2);
dz = now(3) - last(3);
% 若当前y和上一个y距离大于等于 2 * 0.1 ,
% 且属于相同的x,
% 则需要补 dy / 0.1 -1 个新数据到 data 中
if (now(1) == last(1) && dy >= 0.2 - abit)
len = dy / 0.1;
dz = dz / len;
for j = 1:1:len-1+abit
x = now(1);
y = last(2) + 0.1 * j;
z = last(3) + dz * j;
% 往data中插入需补齐的数据
data = [data;x y z];
end
% mark 记录所有原始列上需要补数据的位置
mark = [mark;i];
end
% 将当前的原始数据存到data中
data = [data;now];
last = now;
end
% 打印出补齐后的数据
new_data = data
new_data_size = size(data)
add_location = mark
[本帖最后由 lzu99 于 2009-10-29 09:54 编辑]
最后
以上就是文艺哈密瓜为你收集整理的matlab 补齐,Matlab数据的补齐问题的全部内容,希望文章能够帮你解决matlab 补齐,Matlab数据的补齐问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复