作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 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/
我是一名优秀的程序员,十分优秀!