【问题标题】:Using ismember() with cell arrays containing vectors将 ismember() 与包含向量的元胞数组一起使用
【发布时间】:2012-12-23 23:07:58
【问题描述】:

我正在使用一个元胞数组来包含 [row, col] 形式的 1x2 网格位置向量。 我想检查此元胞数组中是否包含另一个网格位置。

不幸的是,我当前的代码导致错误,我不太明白为什么:

in_range = ismember( 1, ismember({[player.row, player.col]}, proximity(:,1)) );

其中player.rowplayer.col 是整数,proximity 的第一列是前面提到的网格位置元胞数组

我收到的错误是:

??? Error using ==> cell.ismember at 28
Input must be cell arrays of strings.

不幸的是,我无法找到有关以这种方式使用 ismember() 的任何信息,只能将元胞数组作为字符串或在每个元胞中使用单个整数而不是向量。

我曾考虑使用num2str()str2num() 进行转换,但由于我必须在转换之间执行计算,并且由于迭代次数的原因,代码将被循环(10,000 次循环,每个循环 4 次转换),因此方法似乎令人望而却步。

非常感谢您的帮助,谢谢

编辑:为什么ismember() 返回此错误?是否将元胞数组中的所有向量都视为字符串数组?

编辑:是否有比

更好/更有效的方法来确定返回的向量中是否有 1

ismember( 1, ismember(...))?

【问题讨论】:

    标签: matlab vector comparison grid-layout cell-array


    【解决方案1】:

    我现在时间不多(作为 Chrissy eve 和所有),所以这将是一个非常快速的答案。

    据我了解,问题是查找 x y 坐标是否位于许多 x y 坐标的序列中,如果是,则查找它所在位置的索引。如果是这种情况,并且如果您对效率感兴趣,那么搞乱字符串或单元数组是很浪费的。您应该为此使用数字矩阵/向量。

    所以,我的建议是:将元胞数组的第一行转换为数值矩阵。然后,将您的 x y 坐标与此数字矩阵的行进行比较。因为您只想知道两个坐标何时与数值矩阵的一行匹配,请使用 ismember'rows' 选项 - 它只会在匹配整行而不是匹配单个元素时返回 true。

    一些希望对您有所帮助的示例代码如下:

    %# Build an example cell array with coordinates in the first column, and random strings in the second column
    CellOfLoc = {[1 2], 'hello'; [3 4], 'world'; [5 6], '!'};
    
    %# Convert the first column of the cell array to a numerical matrix
    MatOfLoc = cell2mat(CellOfLoc(:, 1));
    
    %# Build an example x y coordinate location to test
    LocToTest = [5 6];
    
    %# Call ismember, being sure to use the rows option
    Index = ismember(MatOfLoc, LocToTest, 'rows');
    

    请注意,如果您的元胞数组中的索引是字符串形式,那么显然您还需要在某处调用str2num,然后再调用ismember

    还有一件事,我注意到您是新成员,所以欢迎来到该网站。如果您认为此回复令人满意地回答了您的问题,请单击此回复旁边的勾号标记已回答的问题。

    【讨论】:

    • 我没有考虑过'rows' 跨矩阵匹配的选项(因此我认为我需要使用元胞数组)。谢谢!
    • @avDiGuida 正如我在回复中提到的,如果我的回复解决了您的问题,最好的感谢是标记已回答的问题 :-)
    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2017-03-15
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多