1

我有:

X6 =

  Columns 1 through 18
 5     3     5     5     4     1     4     4     2     4     4     4     4     4     4     5     5     4
 5     4     4     3     3     4     5     2     4     5     2     4     4     4     4     5     4     5
 5     2     4     4     2     3     3     3   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
 2     3     3     3   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
 4     5     3     3     2     3     3     3     3   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
 3     2     4     2     3     3     5   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
 2     4     4     5     4     5     5   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
 4     2     5     5   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN

  Columns 19 through 27 

     4     5     4     4     4     4     3     3     4
     3     3     4   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN

我想制作一个逐行采用X6cell非零值的单元格。X6

所以X6cell{1}={1x27}, X6cell{8}={1x4}等等...

for i=1:size(X6,1)
X6cell{i}=X6(X6(i,:)~=isnan);
end

不太对。

4

1 回答 1

2

你快到了。语法是:

for i=1:size(X6,1)
    X6cell{i}=X6(i,~isnan(X6(i,:)));
end

(另一种选择:isfinite(X6(i,:))如果您还想忽略任何 Inf 值以及 NaN,也可以使用,这有时很有用)

要删除零(或任何单个数字):

for i=1:size(X6,1)
    X6cell{i}=X6(i,X6(i,:)~=0);
end

要删除任意数量的数字,请使用~ismember

discard_values=[1 5 7 20 100];
for i=1:size(X6,1)
    X6cell{i}=X6(i,~ismember(X6(i,:),discard_values));
end

要链接这些规则(为了清楚起见引入一个新变量),请使用&

discard_values=[1 5 7 20 100];
for i=1:size(X6,1)
    indices_to_keep= ~ismember(X6(i,:),discard_values) & ~isnan(X6(i,:));
    X6cell{i}=X6(i,indices_to_keep);
end
于 2013-07-16T15:40:33.733 回答