gpt4 book ai didi

matlab - 在 MATLAB 中替换 repmat

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:03 24 4
gpt4 key购买 nike

我有一个函数可以多次执行以下循环:

for cluster=1:max(bins), % bins is a list in the same format as kmeans() IDX output
select=bins==cluster; % find group of values
means(select,:)=repmat_fast_spec(meanOneIn(x(select,:)),sum(select),1);
% (*, above) for each point, write the mean of all points in x that
% share its label in bins to the equivalent row of means
delta_x(select,:)=x(select,:)-(means(select,:));
%subtract out the mean from each point
end

注意到 repmat_fast_specmeanOneInrepmat()mean() 的精简版本,分别地,我想知道是否有一种方法可以在标记为 (*) 的行中进行分配,从而完全避免 repmat。

关于如何从这件事中榨取性能的任何其他想法也将受到欢迎。

最佳答案

这里有一个可能的改进来避免 REPMAT:

x = rand(20,4);
bins = randi(3,[20 1]);

d = zeros(size(x));
for i=1:max(bins)
idx = (bins==i);
d(idx,:) = bsxfun(@minus, x(idx,:), mean(x(idx,:)));
end

另一种可能性:

x = rand(20,4);
bins = randi(3,[20 1]);

m = zeros(max(bins),size(x,2));
for i=1:max(bins)
m(i,:) = mean( x(bins==i,:) );
end
dd = x - m(bins,:);

关于matlab - 在 MATLAB 中替换 repmat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6629527/

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