【问题标题】:Extract array dimensions in Julia在 Julia 中提取数组维度
【发布时间】:2014-04-15 09:26:30
【问题描述】:

给定一个在 Matlab 中定义的向量 A:

A =  [ 0
       0
       1
       0
       0 ];

我们可以使用以下方法提取其尺寸:

size(A);

显然,我们可以在 Julia 中使用:

 size(A)

在 Matlab 中,我们可以通过以下方式提取向量中的维度:

[n, m] = size(A);

不管 A 是一维还是二维,而在 Julia A 中,如果 A 只有一维,则 size (A) 将仅返回一维。

如何在 Julia 中做与 Matlab 中相同的事情,即提取 A 的维度,如果 A 是向量,则在向量 [n m] 中。请注意,A 的维度可能会有所不同,即它有时可能有 1 个维度,有时可能有 2 个维度。

【问题讨论】:

  • 你希望m在分配之后,当大小很小的时候?
  • 我不确定我是否理解您的问题。 A 的大小将随 n 和 m 变化。我有兴趣将 m 和 n 传递给函数。 m 将取 1 到 3 之间的值。这是我们正在谈论的一个小模型。
  • 我对 Julia 完全陌生。我可能会对这个问题提出不同的看法:我可以强制将维度 (n,1) 的向量作为维度 (n,1) 的矩阵吗?

标签: arrays matlab julia


【解决方案1】:
A = zeros(3,5)
sz = size(A)

返回一个元组(3,5)。您可以参考sz[1] 等特定元素。或者,

m,n = size(A,1), size(A,2)

即使A 是列向量(即一维),这也有效,为n 返回值1

【讨论】:

  • A = zeros(3,5,2); [n, m] = size(A); 怎么样?在 MATLAB 中,我得到 n = 3 和 m = 10。如何在 Julia 中实现类似的功能?
【解决方案2】:

这将实现您的期望:

n, m = size(A); #or 
(n, m) = size(A);

如果size(A) 是一维Tuple,则不会分配m,而n 将接收length(A)。请务必捕获该错误,否则如果从脚本运行,您的代码可能会停止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多