Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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_Element_Extract_Nan - Fatal编程技术网

Arrays 如何从数组中提取一些元素,并在matlab中生成剩余的NaN?

Arrays 如何从数组中提取一些元素,并在matlab中生成剩余的NaN?,arrays,matlab,element,extract,nan,Arrays,Matlab,Element,Extract,Nan,我有一个13x14双精度阵列。我想提取几个元素,这些元素不是以任何特定的顺序排列的,并使其余的元素为NaN 例如,如果 A = [ 0.2 0.3 0.6 0.4 0.1 0.5 0.2 0.8 0.7 0.1 0.5 0.9 0.2 0.5 0.6 0.7] 我想提取索引为(2,1)、(2,3)(3,3)和(4,2)的元素,并将其余元素作为NaN。因此,最终输出应为: [ NaN NaN NaN NAN 0.1 NaN 0.2 NaN NaN NaN

我有一个13x14双精度阵列。我想提取几个元素,这些元素不是以任何特定的顺序排列的,并使其余的元素为NaN

例如,如果

A = [ 0.2 0.3 0.6 0.4
      0.1 0.5 0.2 0.8
      0.7 0.1 0.5 0.9
      0.2 0.5 0.6 0.7]
我想提取索引为(2,1)、(2,3)(3,3)和(4,2)的元素,并将其余元素作为NaN。因此,最终输出应为:

[ NaN NaN NaN NAN
 0.1 NaN 0.2 NaN
 NaN NaN 0.5 NaN 
 NaN 0.5 NaN NaN ] 
我尝试了逻辑索引,但它给了我一个我不想要的向量,因为这样你就不能重塑它,使它成为二维数组。我想要一个二维阵列。谢谢

首先预先分配:

result = NaN(size(A))
result(2,1) = A(2,1)
result(2,3) = A(2,3)
或者,如果您将下标作为n×2矩阵,则可以使用
sub2ind
一次性完成:

result = NaN(size(A))
subs = [2,1
        2,3
        3,3
        4,2];
ind = sub2ubd(size(A), subs(:,1), subs(:,2));
result(ind) = A(ind)

您可以通过创建一个与完整的NAN大小相同的矩阵,然后使用线性索引以所需的值覆盖NAN来实现这一点:

A = [ 0.2 0.3 0.6 0.4
     0.1 0.5 0.2 0.8
     0.7 0.1 0.5 0.9
     0.2 0.5 0.6 0.7 ]

%(2,1), (2,3) (3,3) and (4,2) % // reads as...
rows = [2, 2, 3, 4];
cols = [1, 3, 3, 2];
idx = sub2ind(size(A), rows, cols) % // pair of indices as linear indices
out = NaN(size(A)); % // Matrix full of NaN (same size as A)
out(idx) = A(idx); % // Overwriting with values from A at given indices