[已答复] 当矩阵过大导致内存不足时应该怎么办——新手小白

[复制链接]
waterfish123 发表于 2022-9-22 09:38:08
[color=var(--theme-color-editor-normal)]u_component1=u_component(75:241,41:105,:,37:409);
[color=var(--theme-color-editor-normal)]v_component1=v_component(75:241,41:105,:,37:409);
[color=var(--theme-color-editor-normal)]tu_component1=tall(u_component1);
[color=var(--theme-color-editor-normal)]tv_component1=tall(v_component1);
[color=var(--theme-color-editor-normal)]%% 去趋势
[color=var(--theme-color-editor-normal)]u_component2= zeros(size(u_component1));
[color=var(--theme-color-editor-normal)]for i=1:166
[color=var(--theme-color-editor-normal)]  for j=1:64
[color=var(--theme-color-editor-normal)]    u_component2(i,j,:,:)=detrend(squeeze(u_component1(i,j,:,:)));
[color=var(--theme-color-editor-normal)]  end
[color=var(--theme-color-editor-normal)]end  
[color=var(--theme-color-editor-normal)]v_component2= zeros(size(v_component1));
[color=var(--theme-color-editor-normal)]for i=1:166
[color=var(--theme-color-editor-normal)]  for j=1:64
[color=var(--theme-color-editor-normal)]    v_component2(i,j,:,:)=detrend(squeeze(v_component1(i,j,:,:)));
[color=var(--theme-color-editor-normal)]  end
[color=var(--theme-color-editor-normal)]end  
[color=var(--theme-color-editor-normal)]%% 预分配内存
[color=var(--theme-color-editor-normal)]u_componentyears=zeros([167 65 31]);
[color=var(--theme-color-editor-normal)]v_componentyears=zeros([167 65 31]);

[color=var(--theme-color-editor-normal)]for i=1:31
[color=var(--theme-color-editor-normal)]  u_componentyears(:,:,:,i)=nanmean(u_component2(75:241,41:105,42-6+(i-1)*12:42+6+(i-1)*12),4);
[color=var(--theme-color-editor-normal)]  v_componentyears(:,:,:,i)=nanmean(v_component2(75:241,41:105,42-6+(i-1)*12:42+6+(i-1)*12),4);
[color=var(--theme-color-editor-normal)]end
[color=var(--theme-color-editor-normal)]使用的是64R2020a

6 条回复


gywxd 发表于 2022-9-22 10:43:29
加内存,又或看看你的运算能不能把矩阵拆成几个小矩阵进行运算

caicaibi 发表于 2022-9-22 12:56:34
1.不再使用的变量清除;
2.矩阵不存在迭代,把大矩阵各自拆开,逐步计算;
3.不要用高维矩阵一次性存储,改为低维度,进行循环计算,减小峰值存储空间;
4.如果存在重复性多的数据,如特别多的零,采用稀疏矩阵;

waterfish123 发表于 2022-9-22 19:21:13
gywxd 发表于 2022-9-22 10:43
加内存,又或看看你的运算能不能把矩阵拆成几个小矩阵进行运算

谢谢您的帮助

waterfish123 发表于 2022-9-22 19:22:33
caicaibi 发表于 2022-9-22 12:56
1.不再使用的变量清除;
2.矩阵不存在迭代,把大矩阵各自拆开,逐步计算;
3.不要用高维矩阵一次性存储,改 ...

谢谢您,请问如何将高维矩阵改为低维矩阵呀?

caicaibi 发表于 2022-9-22 19:27:20
waterfish123 发表于 2022-9-22 19:22
谢谢您,请问如何将高维矩阵改为低维矩阵呀?

最简单的理解,就是顺序排列:
二维转一维
例如
a=[4 5 6;
     7 8 9];
转为一维 b=[4 7 5 8 6 9];

其对应关系为二维中a(2,3)对应一维就是b(6),更高维度转低维度同理。

waterfish123 发表于 2022-9-22 19:30:20
caicaibi 发表于 2022-9-22 19:27
最简单的理解,就是顺序排列:
二维转一维
例如

好的,谢谢您!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表