小编Kar*_*eeM的帖子

对于9元素向量,MATLAB计算Spearman等级相关性的速度太慢

我需要为corr具有不同长度的矢量对(例如,5元素向量到20元素向量)计算Spearman的秩相关(使用函数).对于每个长度,对的数量通常在300对以上.我跟踪进度waitbar.我注意到9元素矢量对需要非常长的时间,其他长度(越来越大)需要非常短的时间.由于公式完全相同,因此问题必须源于MATLAB函数corr.

我编写了以下代码来验证问题是否与corr函数有关,而不是除了'corr'之外的其他计算,其中所有计算(包括'corr')都发生在2或3'for'循环内.代码重复50次,以避免意外结果.

结果是一个条形图,证实了MATLAB计算9元素向量的Spearman秩相关需要很长时间.由于我的计算并不那么重,这个问题不会导致无休止的等待,只会增加整个过程所消耗的总时间.有人能告诉我导致问题的原因以及如何避免这个问题?

Times1 = zeros(20,50);

for i = 5:20
    for j = 1:50
        tic
        A = rand(i,2);
        [r,p] = corr(A(:,1),A(:,2),'type','Spearman');
        Times1(i,j) = toc;
    end
end

Times2 = mean(Times1,2);

bar(Times2);
xticks(1:25);
xlabel('number of elements in vectors');
ylabel('average time');
Run Code Online (Sandbox Code Playgroud)

matlab correlation

5
推荐指数
1
解决办法
188
查看次数

标签 统计

correlation ×1

matlab ×1