我怎样才能压缩这段代码?

3次查看(最近30天)
阿拉斯汗
阿拉斯汗 2021年8月17日
编辑: 阿拉斯汗2021年8月18日
背景: 我在矩阵里有脑电图数据。我已经分析了数据,并根据行为时间戳将其划分为几个较小矩阵的单元数组。例如,脑电图数据有50万个点长,有4个通道。一个单元阵列可能有30个单元;在其中一个单元格中,我可能有一个矩阵,包含4个通道的数据,每个通道只有1000个点长。然后我分别循环遍历这些数组并对它们执行相同的操作。这些设备看起来既笨重又低效。谁能告诉我这个代码是否可以压缩,如果可以,建议?为了清晰起见,其中一个单元格数组称为restLFPs,每个循环完全相同。
代码:
%的休息
thetaPowerRest =南(长度(restLFPs), 1);
betaPowerRest =南(长度(restLFPs), 1);
i = 1:长度(restLFPs)
%获取傅立叶系数,并将其归一化
%,因此,FFT点数
英国《金融时报》= fft (restLFPs);
非功能性测试= 2。*(英尺(1:地板(长度(英尺)/ 2):)。*连词(英尺(1:地板(长度(英尺)/ 2):)))。/长度(英尺)^ 2;
%使用采样频率和信号创建频率矢量
%长度/ NFFT
咩=(0:长度(英尺)1)* (downsamprate /长度(英尺));
咩=咩(1:地板(长度(英尺)/ 2));
Hz3 = dsearchn(咩”,3);
Hz8 = dsearchn(咩”,8);
thetaPower =平均(平均(非功能性测试(Hz3: Hz8:), 2));
thetaPowerRest(我,1)= thetaPower;
Hz10 = dsearchn(咩”,10);
Hz30 = dsearchn(咩”,30);
betaPower =平均(平均(非功能性测试(Hz10: Hz30:), 2));
betaPowerRest(我,1)= betaPower;
结束
清晰的产品名称:thetaPower betaPower ft nft Hz3 Hz8 Hz10 Hz30 i
%控制(所有的)
thetaPowerControl =南(长度(controlLFPs), 1);
betaPowerControl =南(长度(controlLFPs), 1);
i = 1:长度(controlLFPs)
%获取傅立叶系数,并将其归一化
%,因此,FFT点数
英国《金融时报》= fft (controlLFPs{我});
非功能性测试= 2。*(英尺(1:地板(长度(英尺)/ 2):)。*连词(英尺(1:地板(长度(英尺)/ 2):)))。/长度(英尺)^ 2;
%使用采样频率和信号创建频率矢量
%长度/ NFFT
咩=(0:长度(英尺)1)* (downsamprate /长度(英尺));
咩=咩(1:地板(长度(英尺)/ 2));
Hz3 = dsearchn(咩”,3);
Hz8 = dsearchn(咩”,8);
thetaPower =平均(平均(非功能性测试(Hz3: Hz8:), 2));
thetaPowerControl(我,1)= thetaPower;
Hz10 = dsearchn(咩”,10);
Hz30 = dsearchn(咩”,30);
betaPower =平均(平均(非功能性测试(Hz10: Hz30:), 2));
betaPowerControl(我,1)= betaPower;
结束
清晰的产品名称:thetaPower betaPower ft nft Hz3 Hz8 Hz10 Hz30 i
%的
thetaPowerCongruent =南(长度(congruentLFPs), 1);
betaPowerCongruent =南(长度(congruentLFPs), 1);
i = 1:长度(congruentLFPs)
%获取傅立叶系数,并将其归一化
%,因此,FFT点数
英国《金融时报》= fft (congruentLFPs{我});
非功能性测试= 2。*(英尺(1:地板(长度(英尺)/ 2):)。*连词(英尺(1:地板(长度(英尺)/ 2):)))。/长度(英尺)^ 2;
%使用采样频率和信号创建频率矢量
%长度/ NFFT
咩=(0:长度(英尺)1)* (downsamprate /长度(英尺));
咩=咩(1:地板(长度(英尺)/ 2));
Hz3 = dsearchn(咩”,3);
Hz8 = dsearchn(咩”,8);
thetaPower =平均(平均(非功能性测试(Hz3: Hz8:), 2));
thetaPowerCongruent(我,1)= thetaPower;
Hz10 = dsearchn(咩”,10);
Hz30 = dsearchn(咩”,30);
betaPower =平均(平均(非功能性测试(Hz10: Hz30:), 2));
betaPowerCongruent(我,1)= betaPower;
结束
清晰的产品名称:thetaPower betaPower ft nft Hz3 Hz8 Hz10 Hz30 i
%不一致
thetaPowerIncongruent =南(长度(incongruentLFPs), 1);
betaPowerIncongruent =南(长度(incongruentLFPs), 1);
i = 1:长度(incongruentLFPs)
%获取傅立叶系数,并将其归一化
%,因此,FFT点数
英国《金融时报》= fft (incongruentLFPs{我});
非功能性测试= 2。*(英尺(1:地板(长度(英尺)/ 2):)。*连词(英尺(1:地板(长度(英尺)/ 2):)))。/长度(英尺)^ 2;
%使用采样频率和信号创建频率矢量
%长度/ NFFT
咩=(0:长度(英尺)1)* (downsamprate /长度(英尺));
咩=咩(1:地板(长度(英尺)/ 2));
Hz3 = dsearchn(咩”,3);
Hz8 = dsearchn(咩”,8);
thetaPower =平均(平均(非功能性测试(Hz3: Hz8:), 2));
thetaPowerIncongruent(我,1)= thetaPower;
Hz10 = dsearchn(咩”,10);
Hz30 = dsearchn(咩”,30);
betaPower =平均(平均(非功能性测试(Hz10: Hz30:), 2));
betaPowerIncongruent(我,1)= betaPower;
结束
清晰的产品名称:thetaPower betaPower ft nft Hz3 Hz8 Hz10 Hz30 i

接受的答案

Chunru
Chunru 2021年8月18日
考虑一下:
%休息/控制/一致/不一致
thetaPower = NaN(length(restLFPs), 4);
betaPower = NaN(length(restLFPs), 4);
j = 1:4
i = 1:长度(restLFPs)
%获取傅立叶系数,并将其归一化
%,因此,FFT点数
%如果输入是2D单元,则开关结构可以简化
%的数组
开关j
情况下1
英国《金融时报》= fft (restLFPs);
情况下2
英国《金融时报》= fft (controlLFPs{我});
情况下3.
英国《金融时报》= fft (congruentLFPs{我});
情况下4
英国《金融时报》= fft (incongruentLFPs{我});
结束
非功能性测试= 2。*(英尺(1:地板(长度(英尺)/ 2):)。*连词(英尺(1:地板(长度(英尺)/ 2):)))。/长度(英尺)^ 2;
%使用采样频率和信号创建频率矢量
%长度/ NFFT
咩=(0:长度(英尺)1)* (downsamprate /长度(英尺));
咩=咩(1:地板(长度(英尺)/ 2));
Hz3 = dsearchn(咩”,3);
Hz8 = dsearchn(咩”,8);
thetaPower =平均(平均(非功能性测试(Hz3: Hz8:), 2));
thetaPower (i, j) = thetaPower;
Hz10 = dsearchn(咩”,10);
Hz30 = dsearchn(咩”,30);
betaPower =平均(平均(非功能性测试(Hz10: Hz30:), 2));
betaPower (i, j) = betaPower;
结束
结束
2的评论
阿拉斯汗
阿拉斯汗 2021年8月18日
这并不完美,因为“-LFPs”单元格数组的长度并不完全相同(实际上restLFPs根本不是一个单元格数组——只是一个矩阵),但我认为经过一些调整,这就是我需要的。

登录评论。

更多的答案(0)

标签

s manbetx 845


释放

R2021a

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!