如何使用索引将值存储在矩阵中?

时间:2016-03-30 01:15:43

标签: matlab matrix

我有一个3000x3000矩阵(比方说,DAT)。

在另一个变量中,我存储了7个值

基本上,

val是

1.7361111e-13
5.2083338e-13
1.9675925e-12
2.5462963e-12
1.4467592e-12
2.3148147e-13
6.3657407e-13

我还有7个值的相应索引

[x ,y]=find(~isnan(DAT));

x是

1666
1667
1668
1669
1670
1671
1672

1037
1037
1037
1037
1037
1037
1037

loc = find(~isnan(DAT))

3627666
3627667
3627668
3627669
3627670
3627671
3627672

我想使用给定的索引将'val'的值存储在原始矩阵'DAT'中。

我该怎么做?

P.S。我的实际数据要大得多,因此寻找一般的解决方案。

2 个答案:

答案 0 :(得分:1)

您可以直接使用逻辑矩阵~isnan(DAT) 将值存储在原始矩阵中。

DAT(~isnan(DAT)) = vals;

答案 1 :(得分:0)

假设你有一个1维而不是2维矩阵,你可以存储所有的值(这种方式效率更高,特别是对于大型矩阵)。对于列主要有序矩阵,您希望求解等式index = x * maxrows + y,其中x用于迭代列,y用于迭代行。对于3000x3000矩阵,maxrows的值为3000。因此,给定x = 1666y = 1037的值,一维列主要有序矩阵的对应索引值为index = 1666 * 3000 + 1037 = 4999037