[解決済み] MATLABの[]と[1x0]の違いについて
2022-02-28 16:16:38
質問
MATLABで、ワークスペース(2011b、Windows 7、64ビット)のセル配列に以下の項目を入力するループがあります。
my_array =
[1x219 uint16]
[ 138]
[1x0 uint16] <---- row #3
[1x2 uint16]
[1x0 uint16]
[] <---- row #6
[ 210]
[1x7 uint16]
[1x0 uint16]
[1x4 uint16]
[1x0 uint16]
[ 280]
[]
[]
[ 293]
[ 295]
[1x2 uint16]
[ 298]
[1x0 uint16]
[1x8 uint16]
[1x5 uint16]
いくつかのエントリでは
[]
のように、行の
#6
を保持するものもあれば
[1x0]
行のように
#3
.
- あるのか 任意の の違いは何ですか?(MATLABがそれらを異なって表示するという事実以外に)。 MATLABがメモリ上でそれらを表現する方法に何か違いがありますか?
- もし、MATLABが内部的にそれらをどのように表現するかという違いだけであるならば、なぜ プログラマー この違いを意識する必要があるのでしょうか?(つまり、なぜ表示が違うのか?)。これは(無害な)バグなのでしょうか? メリット このような配列が異なる方法で表現されていることを知ることはできますか?
どのように解決するのですか?
で 最も の場合(例外として以下を参照)、実質的な違いはありません。どちらも "空" しかし、プログラマーとしては、この情報を見たい場合もあるでしょうから、これをバグとは言いません。
例えば、2次元の行列があり、より小さな行列に抽出するために、いくつかの行と列にインデックスを付けたいとします。
>> M = magic(4) %# Create a 4-by-4 matrix
M =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> rowIndex = [1 3]; %# A set of row indices
>> columnIndex = []; %# A set of column indices, which happen to be empty
>> subM = M(rowIndex,columnIndex)
subM =
Empty matrix: 2-by-0
空の結果は、まだいくつかの情報、特に、元の行列から2行をインデックス化しようとしたことを教えてくれることに注意してください。もし結果が
[]
行のインデックスが空なのか、列のインデックスが空なのか、あるいはその両方なのかがわからないのです。
注意点...
として定義された空白の行列が、場合によっては
[]
(つまり、すべての次元が 0 の) 空の行列と、0 ではない次元をいくつか持つ空の行列では、結果が異なる場合があります。例えば、行列の乗算は、異なる種類の空の行列を扱った場合、異なる(そして、やや直感的ではない)結果を与えることがあります。ここでは、3つの空の行列を考えてみましょう。
>> a = zeros(1,0); %# A 1-by-0 empty matrix
>> b = zeros(0,1); %# A 0-by-1 empty matrix
>> c = []; %# A 0-by-0 empty matrix
では、これらをいろいろな方法で掛け合わせてみましょう。
>> b*a
ans =
[] %# We get a 0-by-0 empty matrix. OK, makes sense.
>> a*b
ans =
0 %# We get a 1-by-1 matrix of zeroes! Wah?!
>> a*c
ans =
Empty matrix: 1-by-0 %# We get back the same empty matrix as a.
>> c*b
ans =
Empty matrix: 0-by-1 %# We get back the same empty matrix as b.
>> b*c
??? Error using ==> mtimes
Inner matrix dimensions must agree. %# The second dimension of the first
%# argument has to match the first
%# dimension of the second argument
%# when multiplying matrices.
2つの空の行列を掛け合わせて空でない行列を作るのは、頭が痛くなりそうですが、結果がまだ何も含んでいない(つまり値が0である)ので、ちょっと意味があるのです。
関連
-
[解決済み】MATLABの&と&&の違いは何ですか?
-
[解決済み】2つのベクトル間の角度 matlab
-
[解決済み] セルコンテンツから非セル配列オブジェクトへの代入
-
[解決済み] グラフ理論 Matlab BFSアルゴリズム
-
[解決済み] matlabで三角行列を作る
-
[解決済み] numpyの配列と行列の違いは何ですか?どちらを使うべきですか?
-
[解決済み] numpy.arrayの形状(R, 1)と(R,)の違いについて
-
[解決済み] 関数から返されたMATLAB配列を、最初にローカル変数に代入せずにインデックスを作成するにはどうすればよいですか?
-
[解決済み】MATLABでxkcd風グラフを作る
-
[解決済み】なぜMATLABは行列の乗算が速いのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MATLABでctrl+Aを使わずにすべてのコードを自動インデントする
-
[解決済み] MATLABエラー "このコンテキストでは関数定義は許可されていません。" [重複しています]。
-
[解決済み] KroneckerDelta - matlab
-
[解決済み] MATLAB : 周波数分布
-
[解決済み] matlabでhashtables/hashmapsを使う方法はありますか?重複
-
[解決済み] MATLABで分数を10進数に変換する【重複】。
-
[解決済み] Matlabで固有ベクトルを正しくプロットする
-
[解決済み] Matlab: 小図形ウィンドウでYラベルが表示されない
-
[解決済み] MatlabでY軸のプロット範囲を調整する方法は?
-
[解決済み] MATLABのコードヘルプです。バックワードオイラー法