fluent数据处理成二维数组
-
问题: fluent结果怎么处理为二维数组
详述: fluent导出的结果为(坐标,坐标,值)的格式,(值)是一个一维数组,但是在神经网络训练的时候需要(值)为二维数组,请问怎么才能转换?示意图如下:
难点:
1、数据量很大,大概有几万个点
2、fluent导出的数据很不规矩,(比如x=1的时候应该有y=a,y=b,y=c,x=2的时候应该有y=a,y=b,y=c),但是fluent导出的数,x=1的时候有y=a,y=b,y=c,x=2的时候可能只有y=c(不好解释啊 )。二维数组非常稀疏,如下图其实我就想要个二维数组来表示二维的物理量场,请大哥大姐们帮帮忙啊
-
不知道当时的问题是否解决了,我去年做的一部分工作里面也需要相关的处理。当时采用的Matlab对导出的数据进行处理,不过在数据处理之前需要将 x,y当中一些极小的值变成0,比如10的负十几次方的值,因为这些fluent输出的值可能会对处理产生影响,然后导入程序就可以变成矩阵形式了,程序大概如下。供以后有需要的朋友们参考。
data1 = xlsread('D:\User.....');
% 获取X、Y坐标和密度值的向量
X = data1(:, 1);
Y = data1(:, 2);
density = data1(:, 3);% 确定X和Y的唯一值,并按升序排列
unique_x = unique(X);
unique_y = unique(Y);% 创建行列编号映射表
x_mapping = containers.Map(unique_x, 1:length(unique_x));
y_mapping = containers.Map(unique_y, 1:length(unique_y));% 初始化矩阵
num_rows = length(unique_y);
num_cols = length(unique_x);
densityMatrix1 = zeros(num_rows, num_cols);% 将密度值填充到矩阵中
for i = 1:length(X)
row = y_mapping(Y(i));
col = x_mapping(X(i));
densityMatrix1(row, col) = density(i);
end