哪种是在MATLAB中定义1D数组的最佳方法:1(N)或1(N,1)?

时间:2017-07-20 20:39:11

标签: arrays matlab performance optimization

简介

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

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

案例A

arrayA = zeros(1,N);
<案例B
arrayB = zeros(N,1);

问题

使用上述两种方法的性能考虑因素是什么?

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

出于这个问题的目的,我们假设数组“足够大,可以用于任何可能重要的事情”,并且在给定的程序中可能有许多这样的数组。

1 个答案:

答案 0 :(得分:1)

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

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

对于你的“其他考虑”,你需要用矩阵M并在MATLAB中用M(:)“向量化它”,然后结果将是(N,1)的向量。通常,如果我有一个输入向量的函数,我将始终确保它是一个垂直向量(N,1),并且有信心,如果我让它与其他向量交互,它将采用该“基本”格式。 / p>