【问题标题】:Deleting final cell row within a cell array删除单元格数组中的最后一个单元格行
【发布时间】:2017-04-06 08:29:27
【问题描述】:

我有一个函数可以在我的元胞数组中搜索特定字符串,如果找到则删除该行,如果成功则返回布尔值 true,否则返回 false:

BookCell = cellstr(find_by_title(TitleString));
Index = strcmpi(CharacterLibrary, BookCell);
IndexRef = sum(Index(:));
if IndexRef == 0
boolean = false;
else
LibraryArray(Index) = [];
boolean = true;
[LibraryCount,~] = size(LibraryArray);
end
end

我的问题是,当“LibraryArray”只有一行时,它会变成 1x0 单元格数组,而不是像数组较大时那样删除行。我目前的解决方案是简单地对数组的大小使用条件,如果它是一个,则整个数组变为:

 LibraryArray = {};

还有其他解决方案吗?

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    尝试LibraryArray(Index,:) = [];,这样您将删除单个而不是单个

    C1 = {1};
    C2 = {1};
    C1(1) = []; % 1×0 empty cell array
    C2(1,:) = []; % 0×1 empty cell array
    size(C1) % [1 0]
    size(C2) % [0 1]
    

    【讨论】:

    • 工作出色,正是我认为我错过的那种简单性。谢谢。我忘记了线性索引在列而不是行中起作用,因为我正在使用的数组只有一列,所以没关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多