我有一個for循環執行以下的功能:下面的循環可以被矢量化嗎?
由8矩陣以一個M和:由矩陣的8
- 分割成大小爲512元件的塊(意味着X == 512,並且元素的數量可以是128,256,512,1024,2048)
- 將塊重新整形爲1×512(元素數)矩陣。
- 取矩陣的最後1/4並放在前面,
例如,Data = [Data(1,385:512),Data(1,1:384)];
以下是我的代碼:
for i = 1 : NumOfBlock
if i == 1
Header = tempHeader(1:RowNeeded,:);
Header = reshape(Header,1,BlockSize); %BS
Header = [Header(1,385:512),Header(1,1:384)]; %CP
Data = tempData(1:RowNeeded,:);
Data = reshape(Data,1,BlockSize); %BS
Data = [Data(1,385:512),Data(1,1:384)]; %CP
start = RowNeeded + 1;
end1 = RowNeeded * 2;
else
temp = tempData(start:end1,:);
temp = reshape(temp,1,BlockSize); %BS
temp = [temp(1,385:512),temp(1,1:384)]; %CP
Data = [Data, temp];
end
if i <= 127 & i > 1
temp = tempHeader(start:end1,:);
temp = reshape(temp,1,BlockSize); %BS
temp = [temp(1,385:512),temp(1,1:384)]; %CP
Header = [Header, temp];
end
start = end1 + 1;
end1=end1 + RowNeeded;
end
運行這個循環有500萬件將於1個多小時。我需要它儘可能快(以秒爲單位)。這個循環能夠被矢量化嗎?
我做塊在CDMA擴頻。 temp = reshape(temp,1,BlockSize);取第1列並將它變成1乘N矩陣。對其餘列重複並將其附加到第1個1乘N矩陣的末尾。 temp = [temp(1,385:512),temp(1,1:384)];是做一個循環前綴插入。 – 2010-02-22 14:18:37