Arrays 返回不带';在matlab中不包含所有零
我有一个包含许多单元格的单元格数组,每个单元格有50个值。这些单元格要么全部为零,要么是其他数字的组合 我正在寻找一种方法来找出哪些单元格没有全零,因为我想在一个图表中绘制这些单元格。如果我尝试绘制单元数组中的所有单元,这对matlab来说太难处理了。理想情况下,我会得到一个列表,例如,a{1},a{53},a{235},等等,它们不是全部由零组成的 在这里查看时,我发现了如何在数组或矩阵中查找非零值,但我没有看到任何关于查找具有非零值的单元格的内容Arrays 返回不带';在matlab中不包含所有零,arrays,matlab,plot,find,cell-array,Arrays,Matlab,Plot,Find,Cell Array,我有一个包含许多单元格的单元格数组,每个单元格有50个值。这些单元格要么全部为零,要么是其他数字的组合 我正在寻找一种方法来找出哪些单元格没有全零,因为我想在一个图表中绘制这些单元格。如果我尝试绘制单元数组中的所有单元,这对matlab来说太难处理了。理想情况下,我会得到一个列表,例如,a{1},a{53},a{235},等等,它们不是全部由零组成的 在这里查看时,我发现了如何在数组或矩阵中查找非零值,但我没有看到任何关于查找具有非零值的单元格的内容 非常感谢您的帮助 如果单元格包含100个单元
非常感谢您的帮助 如果单元格包含100个单元格x 50行,为什么不将其转换为双矩阵?因为根据你的问题,所有的值都是双精度的,只有数字 首先让你的手机加倍:
m=zeros(size(a,1),size(a,2));
m=str2double(a);
% from https://www.mathworks.com/matlabcentral/answers/18509-cell-conversion-to-double
%Then you can just convert 0's to NaN's and plot all freely
m(m==0) = NaN;
让我们考虑例子数据
a=[{randi(10,1,50)} {randi(10,1,50)} {zeros(1,50)} {randi(10,1,50)}]
然后,您可以找到不完全包含零的单元格索引,如下所示:
nonzeroind=find(~cellfun(@(x) all(x==0),a))
nonzeroind=find(~cellfun(@(x) all(all(x==0)),a))
如果存储在单元格中的矩阵具有多个非单体维度,则必须应用all
的次数与最高维度单元格中的维度相同,如下所示:
nonzeroind=find(~cellfun(@(x) all(x==0),a))
nonzeroind=find(~cellfun(@(x) all(all(x==0)),a))
存储在单元格中的矩阵的大小与此方法无关。您好,非常感谢您抽出时间来帮助我。当我应用nonzeroind=~cellfun(@(x)all(x==0),a)时,我得到的所有单元格都是零。我知道我的单元格数组有一些非零值的单元格,所以我不确定发生了什么。你知道我在这里遗漏了什么吗?非常感谢@这很奇怪,因为它适用于我的示例数据。你能将你的变量保存在一个.mat文件中并上传到你的问题中吗?还要注意,我添加了
find
,以将逻辑输出转换为线性索引。