在 MATLAB 中将大数组限制为一维
Limiting large array to 1D in MATLAB
我正在处理 XShooter 数据和星系校正,我在 MATLAB 中使用 ccm_unred
。问题是
funred = flux*10.^(0.4*A_lambda);
这行代码生成一个29686 X 29686 double
数组。我只想要它的一侧,我可以通过将 funred
重新分配为 funred = funred(:,1)
来实现,但是这段代码也需要 57 seconds
来执行并用完我的 CPU 和RAM 太多,我的笔记本电脑无法保持稳定。有什么方法可以从一开始就将 funred
的生成限制为 (:,1)
吗?
你说你的代码生成了一个 29686 X 29686 的矩阵,但是你在方程中进行了 element-wise 运算。这意味着 flux
或 A_lambda
的胸围为 29686 X 29686。只需将那个尺寸的切片切成薄片!
假设其中之一是 29686 X 29686
funred = flux(:,1)*10.^(0.4*A_lambda(:,1));
只需删除不是矩阵的 (:,1)
。
如果两个都是矩阵,那就不行,因为flux*...
需要整个矩阵才能运算
我正在处理 XShooter 数据和星系校正,我在 MATLAB 中使用 ccm_unred
。问题是
funred = flux*10.^(0.4*A_lambda);
这行代码生成一个29686 X 29686 double
数组。我只想要它的一侧,我可以通过将 funred
重新分配为 funred = funred(:,1)
来实现,但是这段代码也需要 57 seconds
来执行并用完我的 CPU 和RAM 太多,我的笔记本电脑无法保持稳定。有什么方法可以从一开始就将 funred
的生成限制为 (:,1)
吗?
你说你的代码生成了一个 29686 X 29686 的矩阵,但是你在方程中进行了 element-wise 运算。这意味着 flux
或 A_lambda
的胸围为 29686 X 29686。只需将那个尺寸的切片切成薄片!
假设其中之一是 29686 X 29686
funred = flux(:,1)*10.^(0.4*A_lambda(:,1));
只需删除不是矩阵的 (:,1)
。
如果两个都是矩阵,那就不行,因为flux*...
需要整个矩阵才能运算