2

我有一个张量 T

T=ones(2,2,2)

T(:,:,1) =

 1     1
 1     1

T(:,:,2) =

 1     1
 1     1

现在我想通过做添加一个元素

T(3,3,3)=100

我得到以下结果

T(:,:,1) =

 1     1     0
 1     1     0
 0     0     0

T(:,:,2) =

 1     1     0
 1     1     0
 0     0     0

T(:,:,3) =

 0     0     0
 0     0     0
 0     0   100

如您所见,matlab 自动为新的行和列元素插入 0。我知道我可以使用 T(T==0)=NaN 转换零。但我正在寻找一种立即插入 NaN 的方法,这样我就不必进行额外的转换。

  • 有没有一种方法可以让 matlab 为这些元素自动插入 NaN 而不是 0?

期望的结果:

T(:,:,1) =

 1     1    NaN
 1     1    NaN
NaN   NaN   NaN

T(:,:,2) =

 1     1    NaN
 1     1    NaN
NaN   NaN   NaN

T(:,:,3) =

NaN   NaN   NaN
NaN   NaN   NaN
NaN   NaN   100

感谢你的帮助。

4

1 回答 1

2

代码

T=ones(2,2,2)
T(3,3,3)=100
T(T==0)=NaN 
%%// T(~T)=NaN would work too, but not a good practice as T is not logical 

或者

T=ones(2,2,2)
T1 = NaN(3,3,3)
T(1:2,1:2,1:2) = T;
T1(3,3,3)=100

或者

T1 = NaN(3,3,3)
T1(1:2,1:2,1:2)=1;
T1(3,3,3)=100
于 2014-03-26T22:29:16.037 回答