如何根据另一列中的多组行提取一列的均值

1次观看(过去30天)
你好,
我有一个800000x14的数字矩阵。在第2列中,我有几个重要的值循环出现(例如:data(:,2) == 1.0720)。在这一栏中,我还有几个重复出现的重要数字(n=18),这些数字代表刺激的开始和抵消。在另一列=7中,我有我想分别在每个循环数字之前和之后对20行求平均值的值,以提取发病前/偏移和发病后/偏移的均值。
我怎么让matlab在起始值和偏移值前后选取这20行然后取平均值呢?我如何创建一个循环,可以自动检测不同的刺激开始/偏移和平均20行之前和之后的每个这些点,其中每个刺激开始/偏移有其不同的标签(例如:B1_pre/post_onset/offset, B2_pre/post_onset/offset, B3_pre/post_onset/offset,等)。
我不习惯在matlab中创建循环,非常感谢您的帮助。
1评论
Tanaya Chatterjee
Tanaya Chatterjee 2022年10月26日
我尝试使用以下代码作为输出变量。我的数据(Fl_ERSP_mu)共有9个块,其中每个块需要4个参数。我分享了前两个区块供你参考。我正在寻找一个循环,它可以为每个块执行这个函数。此外,使用这个脚本,我无法在工作空间中生成平均变量。请协助。
m=Fl_ERSP_mu(:,2) == 1.0720% block1onset
n=Fl_ERSP_mu(:,2) == 1.8880% block1offset
o= Fl_ERSP_mu(:,2) == 2.2880% block2onset
p= Fl_ERSP_mu(:,2) == 3.6800% block2offset
如果Fl_ERSP_mu(:,2) == 1.0720
B1_preOn= range (Fl_ERSP_mu(m-20:m,:));
B1_preOn_avg= mean (B1_preOn,“所有”B1_preonset的%平均值
B1_postOn= range (Fl_ERSP_mu(m:m+20,:));
B1_postOn_avg= mean (B1_postOn,“所有”b1_发病后%平均值
elseifFl_ERSP_mu(:,2) == 1.8880
B1_preOff= range (Fl_ERSP_mu(n-20:n,:))
B1_preOff_avg= mean (B1_preOff,“所有”% B1_preoffset的平均值
B1_postOff= range (Fl_ERSP_mu(n:n+20,:));
B1_postoff_avg= mean (B1_postOff,“所有”% B1_postoffset的平均值
elseifFl_ERSP_mu(:,2) == 2.2880
B2_preOn= range (Fl_ERSP_mu(o-20:o,:));
B2_preOn_avg= mean (B2_preOn,“所有”B2_preonset的%平均值
B2_postOn= range (Fl_ERSP_mu(o:o+20,:));
B2_postOn_avg= mean (B2_postOn,“所有”b2_发病后的%平均值
elseifFl_ERSP_mu(:,2) == 3.6800
B2_preOff= range (Fl_ERSP_mu(p-20:p,:));
B2_preOff_avg= mean (B2_preOff,“所有”B2_preoffset的%均值
B2_postOff= range (Fl_ERSP_mu(p:p+20,:));
B2_postoff_avg= mean (B2_postOff,“所有”B2_postoffset的%均值
结束

登录评论。

接受的答案

马特·J
马特·J 2022年10月26日
编辑:马特·J 2022年10月26日
对于这样小的数据量,我会挥霍一下,只计算可能需要的所有移动平均线的查找表。
averagesPre = movmean(数据(:,7),[20日0]);%的查找表
averagesPost = movmean(数据(:,7),[0,20]);%的查找表
meanOnsets = averagesPost(ismember(data(:,2), onsetValues));% post-onset意味着
meanOffsets = averagesPre(ismember(data(:,2), offsetValues));% pre-offset意味着

更多答案(0)

标签

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map