簡體   English   中英

在MATLAB中從一維數組生成二維數組

[英]Producing 2D array from a 1D array in MATLAB

有沒有人知道是否有辦法從1D數組生成2D數組,其中2D中的行是通過重復1D數組中的相應元素生成的。

即:

1D array      2D array

  |1|       |1 1 1 1 1|
  |2|       |2 2 2 2 2|
  |3|  ->   |3 3 3 3 3|
  |4|       |4 4 4 4 4|
  |5|       |5 5 5 5 5|

本着獎金答案的精神,這里有一些我自己的:

A = (1:5)'

  1. 使用索引[比repmat更快]:

     B = A(:, ones(5,1)) 
  2. 使用矩陣外產品:

     B = A*ones(1,5) 
  3. 使用bsxfun()[不是最好的方法]

     B = bsxfun(@plus, A, zeros(1,5)) %# or B = bsxfun(@times, A, ones(1,5)) 

您可以使用REPMAT函數執行此操作:

>> A = (1:5).'

A =

     1
     2
     3
     4
     5

>> B = repmat(A,1,5)

B =

     1     1     1     1     1
     2     2     2     2     2
     3     3     3     3     3
     4     4     4     4     4
     5     5     5     5     5

編輯:獎勵答案! ;)

例如, REPMAT是最直接的功能。 但是,要注意的另一個很酷的功能是KRON ,您也可以通過以下方式將其用作解決方案:

B = kron(A,ones(1,5));

對於小向量和矩陣, KRON可能稍微快一點,但對於較大的矩陣來說它要慢得多。

repmat (a,[1 n]),但你也應該看看meshgrid

你可以嘗試類似的東西:

a = [1 2 3 4 5]'
l = size(a)
for i=2:5
    a(1:5, i) = a(1:5)

循環只是將列附加到末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM