【问题标题】:Removing and modifying elements in an array which is a value for a key in containers.Map MATLAB删除和修改数组中的元素,该数组是容器中键的值。Map MATLAB
【发布时间】:2016-09-19 07:46:05
【问题描述】:

我有一个键数组,k
和一个带有数组的单元格,v
我使用containers.Map 来映射键值对。

k = [4,7,9,12];
v = {[3 4 6 7],[1 2 4],[6 3 9 3 4 7],[8 6]};
M = containers.Map(k,v);

所以,M(9) 给出数组 [6 3 9 3 4 7]。我的问题是如何从这个数组中删除一个元素,比如我想从数组中删除 3,以便 M(9) 给出 [6 9 4 7]。注意:我不想通过它的索引删除元素(在我的应用程序中,我不知道要删除的元素的索引。) 我知道对于普通数组'a',我可以使用a(a==3) = []a = a(a~=3) 但是在这里,当我使用M(9)(M(9)==3) = [] 时,它给出了 “错误:()-索引必须出现在索引表达式的最后。”

我知道这可以使用临时变量来完成,但我想知道是否有任何其他方法比使用临时变量更快。

谢谢。

【问题讨论】:

    标签: arrays matlab indexing


    【解决方案1】:

    问题在于,在 MATLAB 中,您不能连续使用两个 () 索引查找(因为恕我直言,语言设计不佳)。

    还不清楚您是否可以就地修改container.Map 值,您可能必须将其读出,修改数组,然后将其分配回container.Map

    但我想知道是否有任何其他方法比使用临时变量更有效。

    “更高效”如何?更少的代码行?快点?对于这样的事情,我不会担心。如果您尝试操作一个 500x500 矩阵,那么可能值得尝试优化速度。

    【讨论】:

    • 更高效是指更快。在这个只是一个例子的问题中,在我的项目中,我必须检查数千个键值对。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2019-05-29
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多