Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在Matlab中压缩一些单体维数_Arrays_Matlab_Matrix_Multidimensional Array - Fatal编程技术网

Arrays 在Matlab中压缩一些单体维数

Arrays 在Matlab中压缩一些单体维数,arrays,matlab,matrix,multidimensional-array,Arrays,Matlab,Matrix,Multidimensional Array,如何在Matlab中仅压缩矩阵的一个子集?“挤压”功能会将它们全部移除 我将这些维度的索引保存在一个称为“dims”的向量中。在Matlab中,没有尾随单态维度。n*m*1矩阵自动成为n*m矩阵。知道了这一点,你的问题就可以解决了,尽管你不想结束: X=ones(2,1,2,1,2,1,2,1,2,1) %dimensions you want to keep in any case dims=[2:4]; %Notice, S is [2,1,2,1,2,1,2,1,2], last dime

如何在Matlab中仅压缩矩阵的一个子集?“挤压”功能会将它们全部移除


我将这些维度的索引保存在一个称为“dims”的向量中。

在Matlab中,没有尾随单态维度。n*m*1矩阵自动成为n*m矩阵。知道了这一点,你的问题就可以解决了,尽管你不想结束:

X=ones(2,1,2,1,2,1,2,1,2,1)
%dimensions you want to keep in any case
dims=[2:4];
%Notice, S is [2,1,2,1,2,1,2,1,2], last dimension already "gone"
S=size(X)
%keep if size>1
dimensions_to_keep=S>1
%and keep if in "dims" list
dimensions_to_keep(dims)=1
%now permute dimensions you don't want to the end
Y=permute(X,[find(dimensions_to_keep),find(~dimensions_to_keep)])
代码

%// Input matrix is assumed as A
sz = size(A)
t2 = sz~=1
t2(dims)=1
out = reshape(A,sz(t2)) %// out is the desired output
如果你对密集代码很着迷,你可以试试这个-

sz = size(A)
out = reshape(A,sz(sort([dims find(sz~=1)])))

@Luis删除了标记-
singleton
这是个好主意,因为这主要是基于那种标记?@Divakar,标记的定义是“singleton是一种设计模式,用于确保特定类的一个应用程序范围的实例存在”。所以很明显,它指的是单例的OOP概念,而不是单例维度。但你可能是对的:当标签的名称确实适用于答案时,根据其定义删除标签是否正确?如果您找到我的编辑,请随时回滚appropriate@LuisMendo我对它不太挑剔。根据定义,现在没关系了。不过,感谢您打开定义文本!供将来参考:移除似乎是最好的操作@Divakar@LuisMendo我想不为这个问题加上这个标签是有道理的。另外,为这个专门的标签创建一个新标签也没有意义。谢谢你在检查这些元的努力。