我是一名信号处理领域的法国学生工程师,我在神经科学实验室实习。我必须在 Matlab 的帮助下处理来自大脑活动的大量数据,所以我的主要课题之一是优化代码。但是现在我陷入了无法解决的情况,并且在网上找不到任何关于它的信息。我解释我的问题:
例如矩阵 a :
a = [ 1 2 3 4 5; 6 7 8 9 10;11 12 13 14 15]
每一行都是一个信号的数据(所以这里我们有 3 个信号),我想,对于每个信号/行,将向量切割成相同长度的互连块。
例如对于信号 1,S1 = [1 2 3 4 5]
我想提取S1_1 = [1 2 3], S1_2 = [2 3 4], and S1_3 = [3 4 5]
块并计算每个子块。
我的第一个想法是使用这样的嵌套循环:
[nrow ncol] = size(a);
for i = 1 : nrow
for j = 4 : ncol
sub_block = a(i, (j-3):j);
result(i, j-3) = compute(sub_block);
end
end
但正如我所说,我必须处理大量数据,所以我想避免 for-loop。我正在寻找一种能够删除这些 for 循环的算法,但我不知道该怎么做......
我看到了“重塑”功能,但这给了我这样的子块:S1_1 = [1 2 3], S1_2 = [4 5 6]
我不能使用它,因为在子块 S1_2 中,我有来自信号 1 和信号 2 的数据。
然后我看到了函数'blockproc',但我并没有真正理解它是如何处理的,我并没有真正相信这个可以帮助我......
所以,我希望你能理解我的问题,并希望你能帮助我或告诉我找到解决方案的方法。