簡體   English   中英

在Matlab中將3D Matrix尺寸作為矢量獲取

[英]Get 3D Matrix dimension as a Vector in Matlab

在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

如果可能的話,我想以矢量化的方式做到這一點。

reshape

t = reshape(T(1,1,:),1,[]);

或者permute

t = permute(T(1,1,:),[1 3 2])

上面的兩個選項都給出了行向量。 對於列向量: t = reshape(T(1,1,:),[],1); t = permute(T(1,1,:),[3 2 1])

您不需要匹配尺寸來回寫(例如T(1,1,:) = v2;就足夠了)。

%get t, removing all singleton dimensions
t=squeeze(T(1,1,:))
%some operations
t=t*rand(1)
%writing t back
T(1,1,:)=t

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM