gpt4 book ai didi

matlab - 将向量存储到元胞数组中

转载 作者:行者123 更新时间:2023-12-02 09:15:39 31 4
gpt4 key购买 nike

我有一个名为 R 的 128x100 矩阵。

我有另一个 1x100 矩阵,称为 I。向量 I 中的值范围为 1-64。

例如我:[13,22,55,63 ... ,35]

R和I的元素之间存在一一对应的关系。

我想知道 I 的每个唯一值,即如果 1 出现在向量 I 中的六个位置(列# 12, 20, 35, 62, 87, 95),如何连接相应的(列# 12, 20, 35, 62, 87, 95) 列并将信息存储在单个元胞数组 S 中,以获取 1-64 之间的所有此类值。

我尝试过,但无法想出紧凑且正确的代码。

for j = 1:64
for i = 1:100
if I(i) == j
S{j} = R(:,i);
end
end
end

最佳答案

使用 accumarray 的解决方案:

S = accumarray(I(:),1:100,[64 1],@(x){R(:,x)});

如果数组 I 不包含 1:64 S 的所有值,则会有空单元格,可以通过这种方式删除:

S(cellfun(@isempty,S))=[];

*感谢@LuisMendo 提出改进答案的建议。

关于matlab - 将向量存储到元胞数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47439937/

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