[转]matlab中squeeze函数的用法,numel的用法

squeeze的作用是移除单一维。

如果矩阵哪一个维数是1,B=squeeze(A)就将这个维数移除。

考虑2-by-1-by-3 数组Y = rand(2,1,3). 这个数组有单一维 —就是每页仅仅一列:

B=squeeze(A)
返回和矩阵A相同元素但所有单一维都移除的矩阵B,单一维是满足size(A,dim)=1的维。
squeeze命令对二维数组是不起作用的;
如果A是一行或列向量或一标量(1*1)值,则B=A。

matlab

示例:
Y =

Y(:,:,1) = Y(:,:,2) =
0.5194 0.0346
0.8310 0.0535

Y(:,:,3) =
0.5297 matlab
0.6711

命令Z = squeeze(Y)结果是2-by-3矩阵:

Z =
0.5194 0.0346 0.5297
0.8310 0.0535 0.6711
考虑1-by-1-by-5数组mat=repmat(1,[1,1,5]). 这个数组每页仅仅一标量值:

mat =

mat(:,:,1) =
1
mat(:,:,2) =

matlab



1
mat(:,:,3) =
1
mat(:,:,4) =

1
mat(:,:,5) =

1

命令squeeze(mat)结果为5-by-1矩阵:

squeeze(mat)

ans =

1
1
1
1
1

size(squeeze(mat))

ans =

5 1

numel
函数功能:该函数用于计算数组中满足指定条件的元素个数
语法格式:n=numel(A)
返回数组A中元素的个数。
n=numel(A,index1,index2,...,indexn)
返回A(index1,index2,...,indexn)中元素的个数,中indexi可以是切片运算、算术表达式逻辑表达式等。
当一个表达式产生一个由逗号隔开的列表(包括形如A{index1, index2, ..., indexn}这种大括号括起来的索引列表,或者使用成员操作符进行结构体成员访问),MATLAB软件就会隐式调用numel内建函数。
原文地址:https://www.cnblogs.com/rong86/p/3551420.html