在matlab中将空矩阵更改为相同维数的零矩阵
我对matlab比较陌生,所以这可能是一个简单的问题,对此我深表歉意 我有一个单元格数组,里面有各种尺寸的单元格。有些是空矩阵(0x2空矩阵、0x3空矩阵、0x16空矩阵……诸如此类),有些不是空矩阵。我试着像这样绘制细胞阵列:在matlab中将空矩阵更改为相同维数的零矩阵,matlab,matrix,plot,cell-array,is-empty,Matlab,Matrix,Plot,Cell Array,Is Empty,我对matlab比较陌生,所以这可能是一个简单的问题,对此我深表歉意 我有一个单元格数组,里面有各种尺寸的单元格。有些是空矩阵(0x2空矩阵、0x3空矩阵、0x16空矩阵……诸如此类),有些不是空矩阵。我试着像这样绘制细胞阵列: for n = 1:numel(cellarray) plot(cellarray{1}(n)) hold on end 但是因为我有一些空矩阵,所以当我尝试运行这个循环和绘图时,会收到一条错误消息 是否有任何方法可以将单元格数组中的空矩阵更改为相同维
for n = 1:numel(cellarray)
plot(cellarray{1}(n))
hold on
end
但是因为我有一些空矩阵,所以当我尝试运行这个循环和绘图时,会收到一条错误消息
是否有任何方法可以将单元格数组中的空矩阵更改为相同维度的零矩阵,以便可以在不显示错误消息的情况下绘制它?非常感谢您的帮助 用NaN的填充你的空单元格。Matlab不会绘制NAN。如果你有相同的大小,或双精度,这将是一个初学者更容易理解,供参考 所以,在你把任何被称为“cellarray”的东西放进你的牢房之前,请做以下事情:
雷=repmat({NaN},3,3);%无论单元格大小如何,您的所有代码都在打印单元格数组第一个元素的第n个元素。由于单元格数组的第一个元素包含的元素少于n个,因此您会收到注释中显示的错误消息 根据您的描述,听起来好像您希望它绘制单元格数组的第n个元素,但它没有这样做 你很可能想要
for n = 1:numel(cellarray)
if ~isempty(cellarray{n})
plot(cellarray{n})
hold on
end
end
可以使用嵌套for循环在单元格数组的每个元素中实现零值
for z=1:m
for y=1:n
for x=1:l
Cellarray{x,y,z}=0;
end
end
end
其中,矩阵是由m个单元格组成的lxn数组。您在cellarray代码中的定义是什么,具体的错误消息是什么?我的错误消息是“索引超过矩阵维数”,我解释为“索引超过矩阵维数”,因为我的循环命中了第一个空矩阵,所以cellarray{1}(n)没有返回值,因此无法打印任何内容。如果执行
打印(n})
,会发生什么情况?