Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MATLAB:如何根据不同数组中的行/列索引将NaN值添加到数据不存在的数组中?_Arrays_Matlab_Sorting_Nan - Fatal编程技术网

Arrays MATLAB:如何根据不同数组中的行/列索引将NaN值添加到数据不存在的数组中?

Arrays MATLAB:如何根据不同数组中的行/列索引将NaN值添加到数据不存在的数组中?,arrays,matlab,sorting,nan,Arrays,Matlab,Sorting,Nan,我有两个数据集数组,A和B。它们是两个不同的、独立的度量值(例如,某个对象的气味和颜色) 对于A和B中的每个数据输入,我有一个时间t和一个位置p。大多数气味和颜色测量是在同一时间和地点进行的。但是,有时数据缺失(即,在某些时候没有颜色测量,只有气味测量)。类似地,有些位置缺少一些数据(即,在某些位置只有颜色测量,没有气味测量) 我想构建A和B的数组,它们具有相同的大小,其中每行对应于一组完整的所有时间,每列对应于一组完整的所有位置。如果缺少数据,我希望该条目为NaN 下面是我想做的一个例子: %

我有两个数据集数组,A和B。它们是两个不同的、独立的度量值(例如,某个对象的气味和颜色)

对于A和B中的每个数据输入,我有一个时间t和一个位置p。大多数气味和颜色测量是在同一时间和地点进行的。但是,有时数据缺失(即,在某些时候没有颜色测量,只有气味测量)。类似地,有些位置缺少一些数据(即,在某些位置只有颜色测量,没有气味测量)

我想构建A和B的数组,它们具有相同的大小,其中每行对应于一组完整的所有时间,每列对应于一组完整的所有位置。如果缺少数据,我希望该条目为NaN

下面是我想做的一个例子:

%Inputs    
A = [0 0 1 2 4; 1 1 3 3 2; 4 4 1 0 3];
t_A = [0.03 1.6 3.9]; %Times when A was measured (rows of A)

L_A = [1.0 2.9 2.98 4.2 6.33]; %Locations where A was measured (columns of A)

B = [10 13 10 10; 15 13 13 12; 14 14 13 12; 15 19 11 13];
t_B = [0.03 1.6 1.9 3.9]; %Times when B was measured (rows of B)
L_B = [2.1 2.9 2.98 5.0]; %Locations where B was measured (columns of B)
我需要一些代码将这些数据集转换为以下内容:

t = [0.03 1.6 1.9 3.9];
L = [1.0 2.1 2.9 2.98 4.2 5.0 6.33];

A_new = [0 NaN 0 1 2 NaN 4; 1 NaN 1 3 3 NaN 2; NaN NaN NaN NaN NaN NaN NaN;  4 NaN 4 1 0 NaN 3];

B_new = [NaN 10 13 10 NaN 10 NaN; NaN 15 13 13 NaN 12 NaN; NaN 14 14 13 NaN 12 NaN; NaN 15 19 11 NaN 13 NaN];
新数组A_new和B_new的大小相同,向量t和L(对应于行和列)是顺序的。原始A在t=1.9时没有数据,因此在新A_中的第三行,有所有NaN值。同样,A_new中的第2列和第6列以及B_new中的第1列、第5列和第7列也是如此


如何在MATLAB中对大型数据集快速执行此操作?

创建一个NaN矩阵,使用函数的第三个输出将浮点数转换为整数索引,并使用矩阵索引填充矩阵:

[t,~,it] = unique([t_A t_B]);
[L,~,iL] = unique([L_A L_B]);

A_new = NaN(numel(t),numel(L));
A_new(it(1:numel(t_A)),iL(1:numel(L_A))) = A;


B_new = NaN(numel(t),numel(L));
B_new(it(numel(t_A)+1:end),iL(numel(L_A)+1:end)) = B;

我假设L_A(最后一行)的第二个参考应该是L_B,对吗?谢谢你的回复。但我不确定这是否适用于我的情况。我在问题中给出的例子可能过于简单,因为t和L向量是顺序整数,而在我的实际情况中,t和L向量不是。我修改了我的例子。有没有办法使你的方法更通用?