我有一个张量 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
感谢您的帮助。
最佳答案
代码
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
关于MATLAB 张量 : Append row and fill in NaN instead of 0 for empty elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22674318/