如何获得这种线性数据的循环移位矩阵?

时间:2014-01-19 20:13:35

标签: matlab signal-processing

请考虑一下,

data=1:64; % sample data points

现在这个数据可以循环移位1个单位(比如右移),以获得64个移位的数据序列。

这个1D矩阵如何在Matlab中循环移位以获得最终的64X64矩阵?

3 个答案:

答案 0 :(得分:3)

result = toeplitz([1,64:-1:2],1:64)

答案 1 :(得分:1)

data=1:64;
data1=ones(64);
for i=1:64
    data1(i,:)=circshift(data,[1 i]);
end

答案 2 :(得分:1)

对于任意data:使用mod进行循环移位,使用bsxfun生成无循环的所有轮班:

result = data(mod(bsxfun(@plus, (0:numel(data)-1).', 0:numel(data)-1), numel(data))+1);