【发布时间】:2015-05-22 08:33:10
【问题描述】:
M = [1007 1007 4044 1007 4044 1007 5002 5002 5002 622 622;
552 552 300 552 300 552 431 431 431 124 124 ;
2010 2010 1113 2010 1113 2010 1100 1100 1100 88 88;
7 12 25 15 12 30 2 10 55 32 12]
X = {[2 5 68 44],[2 10 55 9 17],[1 55 6 7 8 9],[32 12]}
A = [1007 4044 5002 622
552 300 431 124
2010 1113 1100 88
7 25 2 32
12 12 10 12
15 55
30 ]
A 是一个解释我想要什么的实体。
A 包含M(1:3,:) 的唯一列向量,以及M(4,:) 中的对应值
A(1:3,:) = unique(M(1:3,:)','rows')'
我希望找到A(1:3,:) 的列向量,其在M(4,:) 中的对应值不属于单元格X 的向量之一(并且显然不等于这些向量之一)。
对于我的示例,所需的结果是矩阵:
[1007 4044;
552 300;
2010 1113;]
列向量[5002;431;1100] 被删除,因为[2;10;55] 包含在X{2} = [2 10 55 9 17] 中
列向量[622;124;88] 被消除,因为[32 12] = X{4}
【问题讨论】:
-
你尝试过使用循环吗?
-
@Dan:我在寻找没有循环的解决方案,因为我的矩阵的大小大于 1000000 !!
-
从循环开始并首先做好。然后如果它是太慢,在这里发布你的代码,也许有人可以帮助优化它。但就目前而言,您只是要求提供代码,而没有表明您已尝试自己解决问题。
-
如果你真的想在没有循环的情况下尝试它(但我强烈建议你先从循环开始),那么我会考虑使用
accumarray来构建你的其余部分A矩阵(不包括前三行,并将其保留为单独的矩阵),您可能会发现unique语句中的其他输出有助于生成accumarray所需的输入
标签: matlab matrix cell-array