【发布时间】:2017-07-19 23:16:22
【问题描述】:
我是 MATLAB 新手,正在学习使用向量表达式而不是冗长的 for 循环。我有一个 sn-p,我想知道它是否可以写成简洁的向量,如果可以,我将如何修改它。
for v = I
X(i, v) = X(i, v) + length(I(I == v));
end
X 是 1500x200
I 是 3763x1
i 可以认为是一个常数
我在这里做的是这个。 I 包含X 的列索引,我想将这些位置增加特定索引在I 中出现的次数。所以在这个 for 循环完成后,X 的第 i 行将包含一个直方图。
任何其他改进我的 MATLAB 编码的想法或建议也将不胜感激。
【问题讨论】:
-
有一个函数可以用来做你所追求的。看看
accumarray。 (另外,您的代码似乎有逻辑错误;为什么您要遍历 I ,然后每次再次遇到元素时重复 I 中重复的次数?) -
是的,我也注意到了这个错误,现在正在修复它。我会查看您提到的功能并回复您。
标签: matlab vectorization date-histogram