How to use cat properly

3 次查看(过去 30 天)
user20912
user20912 2022-3-29
评论: Matt J 2022-3-29
Hi
I'm confused about the properly way of using cat and the help isn't being so helpful. Let's say that I have a variable var1
Name size
var1 326x377x31x9.
I want to rearrange "passing down" the last dimension. I know that this words make no sense in a matrix context, but please bear with me.
So the new size would be (31x9=279)
Name size
var2 326x377x279
I'm currently using
var2 = cat(XX,var1(:,:,:));
If I use XX as 1,2,3 or 4, I get the same result, this is, the size I want. But, what does it mean in this context if I use XX as 1, 2, 3 or 4?
Thanks.

采纳的回答

Matt J
Matt J 2022-3-29
编辑:Matt J 2022-3-29
The cat command is not causing the change that you are seeing in the array shape. What's causing it is the fact that you are indexing with 3 subscripts (:,:,:) instead of 4. Since the cat command only receives 2 arguments it simply returns the 2nd argument unchanged. You could have equivalently generated var2 without cat as follows:
var1=rand(326,377,31,9);
var2=var1(:,:,:);
whos var1 var2
Name Size Bytes Class Attributes var1 326x377x31x9 274317264 double var2 326x377x279 274317264 double
To do something meaingful with cat(), you must give it 3 or more input arguments, e.g.,
var1=eye(3); var2=rand(3);
cat(1, var1,var2) %cat along dimension 1
ans = 6×3
1.0000 0 0 0 1.0000 0 0 0 1.0000 0.0992 0.6564 0.8313 0.5780 0.2544 0.3718 0.1110 0.8576 0.2186
cat(2,var1,var2) %cat along dimension 2
ans = 3×6
1.0000 0 0 0.0992 0.6564 0.8313 0 1.0000 0 0.5780 0.2544 0.3718 0 0 1.0000 0.1110 0.8576 0.2186
cat(3,var1,var2) %cat along dimension 3
ans =
ans(:,:,1) = 1 0 0 0 1 0 0 0 1 ans(:,:,2) = 0.0992 0.6564 0.8313 0.5780 0.2544 0.3718 0.1110 0.8576 0.2186
  5 个评论
user20912
user20912 2022-3-29
Dear Matt, when you say
or, more generally, you could have used reshape() as Steven mentioned.
do you mean that
var2=var1(:,:,:);
is the same as the following?
[x,y,~] = size(var1)
var2 = reshape(var1,x,y,[])
Because my results are not changing.
Thanks in advance
Matt J
Matt J 2022-3-29
Yes, it's the same.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Electrical Block Libraries 的更多信息

标签

产品


版本

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by