在Matlab中以矢量形式获取三维矩阵维数

在Matlab中以矢量形式获取三维矩阵维数,matlab,vector,matrix,Matlab,Vector,Matrix,在Matlab中,如果我有一个3D矩阵,如下所示:- >> T = rand(4,4,3) T(:,:,1) = 0.3214 0.0986 0.4552 0.4033 0.2283 0.8989 0.7460 0.8627 0.9535 0.5170 0.6831 0.6013 0.1657 0.7017 0.9876 0.9445 T(:,:,2) = 0.5

在Matlab中,如果我有一个3D矩阵,如下所示:-

>> T = rand(4,4,3)

T(:,:,1) =

    0.3214    0.0986    0.4552    0.4033
    0.2283    0.8989    0.7460    0.8627
    0.9535    0.5170    0.6831    0.6013
    0.1657    0.7017    0.9876    0.9445


T(:,:,2) =

    0.5260    0.2102    0.2393    0.9158
    0.8759    0.2099    0.5677    0.4351
    0.5829    0.5325    0.9171    0.7946
    0.5918    0.6938    0.0176    0.0641


T(:,:,3) =

    0.7209    0.7310    0.8726    0.0960
    0.3021    0.1482    0.0549    0.2180
    0.2190    0.4476    0.4889    0.5725
    0.7653    0.3743    0.9298    0.1413
我想获得维度
(1,1,:)
中的所有元素,怎么做

我尝试了以下方法:-

t = T(1,1,:)
但它会产生:-

t(:,:,1) =

    0.3214


t(:,:,2) =

    0.5260


t(:,:,3) =

    0.7209
但是,我希望对作为向量的值执行向量积操作,如下所示:-

t = [0.3214, 0.5260, 0.7209]
v2 = t*v'
然后对
t
执行一些修改,将生成的向量存储回3D矩阵
t

如果可能,我希望以矢量化的方式执行此操作。

:

或:

以上两个选项都提供了行向量。对于列向量:
t=reformate(t(1,1,:),[],1)
t=permute(t(1,1,:),[3,2,1])


写回时不需要匹配维度(例如,
T(1,1,:)=v2;
就足够了)。

对于行向量,也可以使用
square
square(T(1,1,:)
@LuisMendo-True——我看到Daniel给出了这个选项。我自己,我喜欢显式地指定维度,主要是为了可读性,但也为了避免可能的错误。@chappjc非常感谢您的响应和解决方案。然而,我真的很喜欢“挤压”选项。所以,虽然这是一对绝妙的解决方案,但我想我会接受Daniels的回答。我忘记了挤压。非常适合在这里生成行向量。@Daniel R谢谢,我非常喜欢这个。
t = reshape(T(1,1,:),1,[]);
t = permute(T(1,1,:),[1 3 2])
%get t, removing all singleton dimensions
t=squeeze(T(1,1,:))
%some operations
t=t*rand(1)
%writing t back
T(1,1,:)=t