我有一个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。我的实际数据要大得多,因此寻找一般的解决方案。
答案 0 :(得分:1)
您可以直接使用逻辑矩阵~isnan(DAT)
将值存储在原始矩阵中。
DAT(~isnan(DAT)) = vals;
答案 1 :(得分:0)
假设你有一个1维而不是2维矩阵,你可以存储所有的值(这种方式效率更高,特别是对于大型矩阵)。对于列主要有序矩阵,您希望求解等式index = x * maxrows + y
,其中x
用于迭代列,y
用于迭代行。对于3000x3000矩阵,maxrows
的值为3000。因此,给定x = 1666
和y = 1037
的值,一维列主要有序矩阵的对应索引值为index = 1666 * 3000 + 1037 = 4999037
。