在 MATLAB 中定义一维数组的最佳方法是什么:一(1,N) 还是一(N,1)?



简介

假设我想在 MATLAB 中初始化一个一维、长度N的实数数组,其中N足够大,这个问题很重要。我稍后将覆盖这些值,所以我主要关注声明。

我可以通过两种方式做到这一点:

案例 A

arrayA = zeros(1,N);

案例B

arrayB = zeros(N,1);

问题

使用上述任一方法的性能注意事项是什么?

  • 一种方法的初始化速度是否比另一种方法快?
  • 一种方法是否比另一种方法使用更少的内存(甚至可以忽略不计(?
  • 一种方法是否允许更快的内存读/写?
  • 其他注意事项??

出于这个问题的目的,我们将假设数组"足够大,可以容纳任何可能重要的东西",并且给定程序中可能有许多这样的数组。

我不能发誓,但我的理解是,你的问题的答案是否定的,不,不,也许。

我的理解是,基本对象是矩阵对象,它包含(除许多其他内容外(标识矩阵对象的宽度和高度的值,以及存储在对象中的值数组。 因此,无论 (n,1( 还是 (1,n(,这些值中的每一个都会被初始化,并且占用相同数量的值和相同的时间来分配和访问。

对于"其他考虑",您采用矩阵 M 并通过 MATLAB 中的"矢量化"M(:),则结果将是 (N,1( 的向量。 通常,如果我有一个输入向量的函数,我会始终确保它是一个垂直向量 (N,1(,并且有信心,如果我让它与其他向量交互,它将采用该"基本"格式。

最新更新