【问题标题】:Which is the optimal way to define 1D array in MATLAB: ones(1,N) or ones(N,1)?在 MATLAB 中定义一维数组的最佳方法是:ones(1,N) 还是 one(N,1)?
【发布时间】:2017-12-26 17:50:43
【问题描述】:

简介

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

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

案例A

arrayA = zeros(1,N);

案例 B

arrayB = zeros(N,1);

问题

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

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

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

【问题讨论】:

标签: arrays matlab performance optimization


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 2022-09-26
    • 2014-06-20
    • 1970-01-01
    • 2011-01-29
    相关资源
    最近更新 更多