Return 元胞数组中不包含 matlab 中全零的元胞
Return the cells in a cell array that don't contain all zeros in matlab
我有一个包含许多单元格的元胞数组 A,每个单元格有 50 个值。这些单元格要么全为零,要么是其他数字的组合。
我正在寻找一种方法来找出哪些单元格不全为零,因为我想在图表中绘制这些单元格。如果我尝试绘制元胞数组中的所有元胞,Matlab 无法处理。所以理想情况下,我会得到一个列表,例如,A{1}、A{53}、A{235} 等,它们不由全零组成。
在查看此处时,我发现了如何在数组或矩阵中查找非零值,但我没有看到有关查找具有非零值的单元格的任何内容。
非常感谢您的帮助!
如果单元格包含 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))
如果存储在单元格中的矩阵有一个以上的 none-单维,你将不得不应用 all
与你的最高维单元格中的维度一样多的次数,就像这样:
nonzeroind=find(~cellfun(@(x) all(all(x==0)),a))
存储在单元格中的矩阵的大小与这种方法无关。
我有一个包含许多单元格的元胞数组 A,每个单元格有 50 个值。这些单元格要么全为零,要么是其他数字的组合。
我正在寻找一种方法来找出哪些单元格不全为零,因为我想在图表中绘制这些单元格。如果我尝试绘制元胞数组中的所有元胞,Matlab 无法处理。所以理想情况下,我会得到一个列表,例如,A{1}、A{53}、A{235} 等,它们不由全零组成。
在查看此处时,我发现了如何在数组或矩阵中查找非零值,但我没有看到有关查找具有非零值的单元格的任何内容。
非常感谢您的帮助!
如果单元格包含 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))
如果存储在单元格中的矩阵有一个以上的 none-单维,你将不得不应用 all
与你的最高维单元格中的维度一样多的次数,就像这样:
nonzeroind=find(~cellfun(@(x) all(all(x==0)),a))
存储在单元格中的矩阵的大小与这种方法无关。