matlab中将空矩阵变为同维度的零矩阵

Change empty matrices to zero matrices of the same dimensions in matlab

我对 matlab 比较陌生,所以这可能是一个简单的问题,对此我深表歉意。

我有一个元胞数组,其中包含各种维度的元胞。有些是空矩阵(0x2 空矩阵,0x3 空矩阵,0x16 空矩阵......类似的东西),有些不是空矩阵。我正在尝试像这样绘制元胞数组:

for n = 1:numel(cellarray)
    plot(cellarray{1}(n))
    hold on
end

但是因为我有一些空矩阵,所以当我尝试 运行 这个循环和绘图时收到错误消息。

有什么方法可以将元胞数组中的空矩阵更改为相同维度的零矩阵,以便我可以在不显示错误消息的情况下绘制它?非常感谢您提供的所有帮助!

用 NaN 填充空单元格。 Matlab 不会绘制 NaN。如果你有相同大小的东西,或者双精度,作为初学者会更容易理解,仅供参考。

因此,在将任何内容放入名为 "cellarray" 的单元格之前,请执行以下操作:

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 数组。