【发布时间】:2014-04-09 16:26:30
【问题描述】:
我有大约 300 行的单元格数组。该数组有 6 列。在第 6 列中,很多行都是零。我想从我的数组中删除这些行。
我正在使用下面的行,但收到一条错误消息,提示“未定义函数 'ne' 用于类型为 'cell' 的输入参数。”
myData = myData(myData(:,6) ~= 0);
【问题讨论】:
标签: matlab
我有大约 300 行的单元格数组。该数组有 6 列。在第 6 列中,很多行都是零。我想从我的数组中删除这些行。
我正在使用下面的行,但收到一条错误消息,提示“未定义函数 'ne' 用于类型为 'cell' 的输入参数。”
myData = myData(myData(:,6) ~= 0);
【问题讨论】:
标签: matlab
如果是数字元胞数组,试试这个 -
myData(~vertcat(myData{:,6}),6)={[]}
或
myData(~cell2mat(myData(:,6)),6)={[]}
或者这个,纯粹来自@chappjc的cmets
myData(~[myData{:,6}],6)={[]}
如果是字符元胞数组,试试这个 -
myData(~str2double(myData(:,6)),6)={''}
编辑 1:如果您想在第 6 列中的对应元素为零的情况下删除整行,请使用 : 索引整行。因此,上述代码将分别变为以下形式:
myData(~vertcat(myData{:,6}),:)={[]}
myData(~cell2mat(myData(:,6)),:)={[]}
myData(~[myData{:,6}],:)={[]}
myData(~str2double(myData(:,6)),:)={''}
编辑 2:如果你想从单元格数组中删除所有空单元格的行,你可以使用这个 -
myData(all(cellfun('isempty', myData),2),:) = []
【讨论】:
horzcat 并简单地测试不等式 (myData = myData([myData{:,6}]~=0,6);)。 +1,但出于好奇,为什么要使用 ismember?
ismember!但是,是的,这在这里是多余的。 [] 与数字单元阵列一起创造奇迹,谢谢!!
myData(~[myData{:,6}],:)={[]}