【发布时间】:2014-02-03 20:35:23
【问题描述】:
我有以下矩阵c = [1 2 NaN;2 NaN 1;4 1 NaN;3 NaN NaN] 和另一个矩阵A = [ 16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1 ]。我们初始化矩阵B=nan(size(A))。我想使用c的每一行作为A每一行的索引,并将结果存储在B的对应元素中。例如,对于 c(1,:) = [1 2 NaN] 和 B(1,:) = [16 2 NaN NaN ],c(4,:) = [3 NaN NaN] 和 B(4,:) = [NaN NaN 15 NaN];
我认为一个可能的解决方案是:
B= nan(size(A));
for i=1:size(A,1)
B(i,c(i,~isnan(c(i,:)))) = A(i,c(i,~isnan(c(i,:)))) ;
end
我正在尝试不使用 for 循环来做到这一点,但到目前为止没有成功,因为在每一行 c 中可能有不同数量的 NaN 值。
如果没有for loops,我们可以这样做吗?
谢谢!
【问题讨论】:
-
我模糊地想知道您是否应该制作 c 和 B 稀疏矩阵,而不是使用所有这些 NaN。
标签: matlab