HCA*_*CAI 4 arrays matlab vector
我有两个向量r和d我想知道的次数r<d(i)在那里i=1:length(d).
r=rand(1,1E7);
d=linspace(0,1,10);
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有以下内容,但它不是很优雅:
for i=1:length(d)
sum(r<d(i))
end
Run Code Online (Sandbox Code Playgroud)
这是R中的一个例子,但我不确定这对matlab是否有效: 找到一个向量中小于另一个向量中元素的元素数
你可以使用单例扩展bsxfun:比循环更快,更优雅,但也更加内存密集:
result = sum(bsxfun(@lt, r(:), d(:).'), 1);
Run Code Online (Sandbox Code Playgroud)
最近,bsxfun由于隐式单例扩展,可以删除Matlab版本:
result = sum(r(:)<d(:).', 1);
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用histcounts带有'cumcount'选项的函数:
result = histcounts(r(:), [-inf; d(:); inf], 'Normalization', 'cumcount');
result = result(1:end-1);
Run Code Online (Sandbox Code Playgroud)