【发布时间】:2016-06-22 13:46:48
【问题描述】:
我有一个 2549x13 双精度数组 (M)。
示例行:
-7.8095 -4.4135 -0.0881 2.5159 6.3142 6.9519 4.9788 2.9109 0.6623 -0.9269 0.3172 1.2445 -0.0730
4.5819 6.2371 5.8721 6.1824 5.2074 4.8656 5.0269 5.3340 3.6919 1.3608 -0.5443 0.2871 -1.2070
-6.2273 -3.7767 1.1829 2.8522 3.2428 0.5261 -3.5535 -7.7743 -8.4391 -9.8188 -6.0503 -5.8805 -7.7700
-2.2157 -3.2100 -4.4400 -3.5898 -0.8901 3.4061 6.5631 7.2028 4.3082 -0.7742 -5.0963 -3.1837 0.4372
5.5682 5.5393 3.4691 0.6789 1.7320 4.4472 3.7622 1.0194 -0.5362 -3.1721 -6.1281 -6.3959 -6.1932
0.9707 -0.2701 -3.8883 -8.8974 -7.0375 -1.5085 5.4171 6.0831 2.9852 -2.3474 -4.5637 -3.7378 1.3236
-2.811 0.0164 2.7208 5.7862 7.3344 8.3504 9.0635 8.4271 2.7669 -2.1403 -2.2003 -0.9940 0.7729
4.2382 3.3532 3.5475 7.9209 11.7933 14.3181 13.6289 12.9553 13.7464 14.1331 14.3814 16.7949 15.9003
-0.0539 -2.7059 -3.8141 -2.7531 -1.7465 0.9190 2.2220 0.7268 1.5436 1.0426 2.3535 3.0269 6.4798
我也有一些我需要的值的索引,2549x5 double(inde)。
示例行:
4 5 6 7 8
0 1 2 3 4
3 4 5 6 7
6 7 8 9 10
-1 0 1 2 3
6 7 8 9 10
5 6 7 8 9
10 11 12 13 14
11 12 13 14 15
我现在想用实际值创建一个新数组/矩阵。因此,要在数组 M 中找到与索引 inde 对应的值。
但是,如果索引(在 inde 中)等于 0,我想取对应于该行的索引 1、2、3、4 的值。 如果索引是 -1 或 15,我想在新数组/矩阵中插入一个 NaN。 如果索引是14,我想取10、11、12、13对应的值。 所以我想获得:
2.5159 6.3142 6.9519 4.9788 2.9109
NaN 4.5819 6.2371 5.8721 6.1824
1.1829 2.8522 3.2428 0.5261 -3.5535
3.4061 6.5631 7.2028 4.3082 -0.7742
NaN
-1.5085 5.4171 6.0831 2.9852 -2.3474
7.3344 8.3504 9.0635 8.4271 2.7669
14.1331 14.3814 16.7949 15.9003 NaN
NaN
非常感谢任何可以提供帮助的人。
【问题讨论】:
-
你的问题有很多问题。首先,MATLAB 不会将索引标识为零。所以你的条件之一是无效的。我假设您的意思是第一个索引。在那之后,你想要的矩阵有一些问题。第二行在最后一列中没有元素。第8行的问题也是如此。即第一列中没有元素。 &什么是NA?它是 1x5 行向量吗?考虑到
NA是所有NaN的一行并随机填充第 2 行和第 8 行中的缺失元素,我能够产生您想要的结果!当你澄清提到的问题时,我会发布答案 -
@Sardar_Usama 重新索引:我所做的是确定矩阵 M 中每一行的最大值。
[Peak Ind] = max(M, [], 2);然后我需要考虑最大值前后的 2 个值。inde = bsxfun(@plus,Ind, -2:2);这就是我在索引中获得零的原因。 -
@Sardar_Usama 重新需要的矩阵:我想要的是最大值前后的 2 个值。但是,当 inde 中的索引为 0 时,这意味着我的最大值在矩阵 M 的第二列中。因此,我只需要考虑最大值之前的 1 个值,以及最大值之后的 2 个值。这就是为什么第二行的最后一个值丢失的原因。第 8 行也一样。这里的最大值在倒数第二列。因此,我需要考虑最大值之前的 2 个值,以及最大值之后的 1 个值。这就是缺少第 8 行第一个值的原因。
-
但是,我可以使用 NA 而不是缺失值。
-
什么是
NA?
标签: arrays matlab indexing find