54966


40000行 x i 列の２次元配列にデータを入れていくコードを書いています。  
現在１次元の配列なので、エラーが以下のように出ていますが、MATLABではどのように２次元配列を宣言するのでしょうか。

エラー

[code]

    添字による代入の次元が一致しません。
    
[/code]

コード

[code]

    num = 3
    for i = 1:1:num 
               rxData(i) = event.Data(:, i+1);
    end
    
[/code]

pythonだと

[code]

    for i in range(num):
        list 1 = [[0]*i]*40000
    
[/code]

で0の40000xi列の２次元配列が作れますが、MATLABでの宣言方法を調べても見つけることができていない状態です。

MATLABドキュメントの[多次元配列](https://jp.mathworks.com/help/matlab/math/multidimensional-
arrays.html)、[行列および配列](https://jp.mathworks.com/help/matlab/learn_matlab/matrices-
and-arrays.html)は目を通しましたが、宣言方法について細かく明記している箇所がありませんでした。

ご回答を受けて追記  
ご回答いただきましてありがとうございます。

[code]

    for i = 1:1:num
        rxData = zeros(40000, i);
    end
    
    for i = 1:1:num
        rxData(i) = event.Data(:, i+1); 
    end
    
[/code]

とすると  
「代入文A(:)= BにおいてAとBの要素数は同じでなければなりません。」

rxData(i) = event.Data(:, i+1); を  
rxData(40000, i) = event.Data(:, i+1);とすると

「代入の右辺の次元が、大きさが１でない次元の添字より多くなっています。」  
とのエラーが出ている状況です。

for文を書かずに  
rxData = event.Data(:, 2);  
とすると40000x1行の変数rxDataには40000x1行のデータが入っていることは確認済みです。


CC BY-SA 4.0
2019-05-15T02:49:52.077
54964
2019-05-15T04:12:22.513
2019-05-15T03:15:07.447
question
array matlab データ構造
MATLABにおける２次元配列の宣言について


`for`は使わずに一行で

[code]

    rxData = event.Data(:, 2:end);
    
[/code]

はどうでしょうか。

* * *

(もったいないので前の回答も残しておきます)

`zeros`という関数があります。例えば

[code]

    zeros(40000,5)
    
[/code]

で、すべての要素を0で初期化した40000x5の配列が作成されます。三次元配列なら

[code]

    zeros(2,3,4)
    
[/code]

のように作成できます。


CC BY-SA 4.0
2019-05-15T03:01:34.683
54966
2019-05-15T04:12:22.513
2019-05-15T04:12:22.513
3605
3605
54964
answer