matlab如何进行批量计算,什么是matlab中逐列相关的快速计算方法

手动计算可以获得x100的速度提升.

An=bsxfun(@minus,A,mean(A,1)); %%% zero-mean

Bn=bsxfun(@minus,B,mean(B,1)); %%% zero-mean

An=bsxfun(@times,An,1./sqrt(sum(An.^2,1))); %% L2-normalization

Bn=bsxfun(@times,Bn,1./sqrt(sum(Bn.^2,1))); %% L2-normalization

C=sum(An.*Bn,1); %% correlation

您可以使用该代码进行比较:

A=rand(60,25000);

B=rand(60,25000);

tic;

C=zeros(1,size(A,2));

for i = 1:size(A,2)

C(i)=corr(A(:,i), B(:,i));

end

toc;

tic

An=bsxfun(@minus,A,mean(A,1));

Bn=bsxfun(@minus,B,mean(B,1));

An=bsxfun(@times,An,1./sqrt(sum(An.^2,1)));

Bn=bsxfun(@times,Bn,1./sqrt(sum(Bn.^2,1)));

C2=sum(An.*Bn,1);

toc

mean(abs(C-C2)) %% difference between methods

以下是计算时间:

Elapsed time is 10.822766 seconds.

Elapsed time is 0.119731 seconds.

两个结果之间的差异非常小:

mean(abs(C-C2))

ans =

3.0968e-17

编辑:解释

bsxfun执行逐列操作(或逐行取决于输入).

An=bsxfun(@minus,A,mean(A,1));

该行将删除(@minus)每列的平均值(平均值(A,1))到A的每列.因此,基本上它使A的列为零均值.

An=bsxfun(@times,An,1./sqrt(sum(An.^2,1)));

该行乘以(@times)每列与其规范的倒数.所以它使它们L-2归一化.

一旦列为零均值和L2归一化,为了计算相关性,您只需要将A的每列的点积乘以B的每一列.因此,将元素乘以* Bn乘以你总和每列:sum(An.* Bn);.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在工作中,经常会遇到需要批量处理Excel数据的情况。使用Matlab可以很方便地实现这个功能。你可以使用Matlab的内置函数来读取和处理Excel文件。首先,你需要使用`xlsread`函数来读取Excel文件中的数据。然后,你可以使用Matlab的各种数据处理函数对读取的数据进行处理,例如计算统计量、绘制图表等。最后,你可以使用`xlswrite`函数将处理后的数据写入到新的Excel文件中。通过使用循环结构,你可以批量处理多个Excel文件。这样,你就可以高效、快速地处理多个Excel文件中的数据了。如果你对使用Python进行批量处理Excel数据也感兴趣,可以尝试使用Python的pandas库来实现类似的功能。 #### 引用[.reference_title] - *1* *3* [matlab批量处理excel(CSV)文件数据](https://blog.csdn.net/zzx2016zzx/article/details/86696313)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [采用matlab软件捞取和处理多个excel中数据](https://blog.csdn.net/jxxl_1314/article/details/130514369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值