我有一個單元陣列1x15350,我想查找包含一個以上的值的每一個細胞,因此是更大然後1x1的提取物的細胞。
例如:
A={{1}, {2 3}, {4}}
A =
{1x1 cell} {1x2 cell} {1x1 cell}
問題
我如何提取只有那些更大然後1x1 cell
細胞?
我有一個單元陣列1x15350,我想查找包含一個以上的值的每一個細胞,因此是更大然後1x1的提取物的細胞。
例如:
A={{1}, {2 3}, {4}}
A =
{1x1 cell} {1x2 cell} {1x1 cell}
問題
我如何提取只有那些更大然後1x1 cell
細胞?
解決方案
用下面的辦法:
out = A(cellfun(@numel,A)>1);
結果
我跑到下面的腳本:
A={{1}, {2 3}, {4}};
B={{1}, {2 3}, {4},{9,2,1},{8}};
outA = A(cellfun(@numel,A)>1);
outB = B(cellfun(@numel,B)>1);
,並得到日ESE結果:
outA =
{1x2 cell}
outB =
{1x2 cell} {1x3 cell}
outA{1} =
[2] [3]
cellfun具有模仿@numel但速度更快的選擇。它被稱爲「prodofsize」。對於具有10000個元素的單元數組c:'>> tic,對於i = 1:1000,y = cellfun(@ numel,c);結束,toc 已用時間爲10.050336秒。 >> tic,for i = 1:1000,y = cellfun('prodofsize',c);結束,toc 已用時間爲0.073865秒。 >>所有(cellfun( 'prodofsize',C)== cellfun(@numel,C)) ANS = 1' – SCFrench