MATLAB 张量 : Append row and fill in NaN instead of 0 for empty elements

标签 matlab matrix multidimensional-array nan sparse-array

我有一个张量 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/

相关文章:

java - Matlab和Java问题

c++ - Char 是算术类型吗?

c - 在 C 中使用指针算法访问二维数组元素

multidimensional-array - 在 Coldfusion 中创建函数以将多维数组动态转换为查询对象

java - Java 中的图像处理,如 MATLAB Image Processing Toolbox

matlab - 在命令窗口中禁用自动滚动

r - 一维矩阵更改为R中的向量

android - 反转和乘法旋转矩阵android?如何

c - 由于大小分配导致的数组错误

MATLAB精度