Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中将空矩阵更改为相同维数的零矩阵_Matlab_Matrix_Plot_Cell Array_Is Empty - Fatal编程技术网

在matlab中将空矩阵更改为相同维数的零矩阵

在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 但是因为我有一些空矩阵,所以当我尝试运行这个循环和绘图时,会收到一条错误消息 是否有任何方法可以将单元格数组中的空矩阵更改为相同维

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

我有一个单元格数组,里面有各种尺寸的单元格。有些是空矩阵(0x2空矩阵、0x3空矩阵、0x16空矩阵……诸如此类),有些不是空矩阵。我试着像这样绘制细胞阵列:

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})
,会发生什么情况?