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