gpt4 book ai didi

arrays - 用Matlab快速获得满足条件的矩阵部分

转载 作者:行者123 更新时间:2023-12-05 09:23:03 25 4
gpt4 key购买 nike

我需要一种快速的方法来获取矩阵中的部分并将它们堆叠到一个新矩阵中。假设我有一个这样的矩阵:

M=

 1    45     4
1 91 15
2 34 89
3 89 9
3 96 99

现在我想例如获取最后两列中的所有元素 s.t.左列的值为 [1; 3],即输出应如下所示:

 45     4
91 15
89 9
96 99

获取例如第一列1对应的部分,我可以做

M(M(:,1) == 1,2:end), 

并且我可以使用“或”逻辑来获取对应于 [1;3] 的部分,但在实际情况下,我会有一个长整数向量...是否有向量化的方法来执行此操作?

我认为 for 循环也可能非常快,但矩阵的各个部分大小不同,快速堆叠它们可能很困难......

最佳答案

看看这对你来说是否足够快 -

int_arr = [1 3]; %// array of integers to select the rows
M(any(bsxfun(@eq,M(:,1),int_arr),2),2:end)

或者

int_arr = [1;3]; %// array of integers to select the rows
M(any(bsxfun(@eq,M(:,1)',int_arr)),2:end)

关于arrays - 用Matlab快速获得满足条件的矩阵部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24284691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com