我有这样的数组:
[1 NaN NaN]
[NaN 2 NaN]
[NaN NaN 3]
如何将它们合并到
[1 2 3]
答案 0 :(得分:1)
您可以将所有矩阵连接成一个大矩阵,然后使用逻辑索引来取出数字:
A = [1 NaN NaN 1];
B = [NaN 2 1 NaN];
C = [3 NaN 2 3];
D = [A B C];
E = D(~isnan(D))
现在E
看起来像这样:
E =
1 1 2 1 3 2 3
答案 1 :(得分:1)
将向量连接到矩阵中,然后计算丢弃NaN
的每列的平均值:
vectors = {[1 NaN NaN], [NaN 2 NaN], [NaN NaN 3]};
result = mean(vertcat(vectors{:}), 1, 'omitnan'); % or nanmean(vertcat(vectors{:}),1)
答案 2 :(得分:0)
您可以用零替换NaN
:
x = [1 NaN NaN]
y = [NaN 2 NaN]
z = [NaN NaN 3]
x(isnan(x)) = 0
y(isnan(y)) = 0
z(isnan(z)) = 0
x + y + z
答案 3 :(得分:0)
你可以将所有矩阵组合起来(这将A放在B的顶部):
C = [A ; B];
然后你可以检测到不是NaN的细胞:
D = ~isnan(C);
之后,您可以选择这些逻辑:
e = C(D);
现在这是一个垂直向量,您可以将其设为水平:
e = e';