Understanding higher dimension in MATLAB

3 次查看(过去 30 天)
Hello all, I am trying to understand about higher dimensions in MATLAB, but not getting it clearly.
For example: a = rand(2,2); ----(1)
I understood that above command in MATLAB will produce random variable "a" having 2 rows and 2 columns.
But I am not getting what will be the output of say b = rand(2,2,3) or b = rand(2,2,3,4) indicates.
Thus my main query is that I am not understanding properly about higher dimension in MATLAB.
Any help in this regard will be highly appreciated.
  3 个评论
Stephen23
Stephen23 2024-1-24
A whimsical proposal for some names of dimensions (hopefully with minimal overlap with technical terms):
  1. row (TMW & maths)
  2. column (TMW & maths)
  3. page (TMW)
  4. book
  5. shelf
  6. section
  7. library
  8. corpus
See also:
Dyuman Joshi
Dyuman Joshi 2024-1-24
Quite a nice list you have there, @Stephen23.
I was going to propose floor between section and library, but unfortunately that overlaps with floor.
And storey/level does not have the same fit to it.

请先登录,再进行评论。

采纳的回答

John D'Errico
John D'Errico 2024-1-23
编辑:John D'Errico 2024-1-23
Visualize a vector. For example, the vector
V = 1:5
V = 1×5
1 2 3 4 5
So the numbers 1 through 5, stored in sequence in memory. Got it? rand will do something similar.
rand(1,5)
ans = 1×5
0.5599 0.1491 0.3358 0.0136 0.0369
5 numbers, stored in the vector V.
Do you see that a vector is just a set of scalars, stacked together into a one-dimensional list of numbers?
Next, what is a 2 dimensional array?
A2d = rand(2,3)
A2d = 2×3
0.9718 0.3620 0.6652 0.4545 0.6057 0.3576
2 rows, 3 columns. But it is just a set of 6 numbers here, stored with an associated shape. In this case, a rectangular shape. We can think of it as 3 column vectors, each of length 2, as as 2 row vectors, each of length 3, if you prefer.
A2d(:,1) % the first column of A2d
ans = 2×1
0.9718 0.4545
A2d(1,:) % the first row vector stored in A2d
ans = 1×3
0.9718 0.3620 0.6652
Got it?
Next, visualize a cube. A cube has three dimensions, right? We can think of that cube as squares, packed on top of each other. But each square can be thought of as 2 dimensional arrays, and we already understand 2 dimensional arrays. (Well, I hope we do.)
So if we extend the idea of a 2-dimensional array as just a set of 1-dimensional vectors, stacked next to each other, or on top of each other, then a 3 -dimensional array is no different. I'll do this one using a vector of integers first, so you can predict what numbers will be where.
A3d = reshape(1:12,[2 2 3])
A3d =
A3d(:,:,1) = 1 3 2 4 A3d(:,:,2) = 5 7 6 8 A3d(:,:,3) = 9 11 10 12
What do we see there? The first "plane" of that array is a 2x2 matrix. We saw it displayed above, but we can extract it like this:
A3d(:,:,1)
ans = 2×2
1 3 2 4
Again, think of a higher dimensinal array as just lower dimensional arrays, stacked up.
R = rand(2,3,4)
R =
R(:,:,1) = 0.0669 0.7084 0.4073 0.5308 0.4514 0.4074 R(:,:,2) = 0.7872 0.5268 0.1943 0.7919 0.1478 0.6438 R(:,:,3) = 0.9757 0.3458 0.6599 0.5446 0.9618 0.4549 R(:,:,4) = 0.9378 0.4052 0.7834 0.1438 0.1839 0.2659
So a 2x3x4 array.
Finally, we can stack three dimensional arrays, into a 4-dimensional array. We can see tham all listed below.
b = rand(2,2,2,2)
b =
b(:,:,1,1) = 0.4676 0.0003 0.3202 0.1176 b(:,:,2,1) = 0.6656 0.8099 0.9382 0.7427 b(:,:,1,2) = 0.3774 0.8263 0.2789 0.0461 b(:,:,2,2) = 0.7243 0.2364 0.0349 0.2116
Unfortunately, our minds live in a 3-dimesinal world. They are not constructed to think in higher dimensions than 3. But surely you can follow the abstract idea of stacking lower dimensional things, to create something with one more dimension?

更多回答(1 个)

Matt J
Matt J 2024-1-23
编辑:Matt J 2024-1-23
In general,
a=rand(M,N,P,Q)
means that a will return a number when you give it 4 subscripts a(i,j,k,l) for any combination of subscripts in the ranges,
1<=i<=M
1<=j<=N
1<=k<=P
1<=l<=Q
and similarly for higher dimensions.

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by