n=5;
h=[1;2;3;4];
x = [zeros(1,n) randn(1,n) zeros(1,n)];
t(1,:) = [x(n+1:-1:(length(h)-1))];
for k=2:n
t(k,:) = [x(n+k:-1:(length(h)-1))];
end
for循环中有什么问题吗?因为我的第一次迭代创建我的行向量没有问题,但是当它出现在for循环中时我似乎可以使循环运行并且我得到的错误消息是'Subscripted assignment dimension mismatch'。我似乎无法找到错误
对于我的情况,我应该得到的最终输出如下
[x6 x5 x4 x3; x7 x6 x5 x4; x8 x7 x6 x5;x9 x8 x7 x6;x10 x9 x8 x7;x11 x10 x9 x8]
答案 0 :(得分:2)
当我跑到它被卡住的地方时,这就是我所看到的:
您的变量t
大小为1x4
您尝试在其下方添加一行1x5
的行显然它不适合。
从你的描述来看,我会说第二行太长了。
答案 1 :(得分:1)
我想你可能想要这样的东西:
t = zeros(n+1,length(h)) % pre-allocate t to an array of zeros of the correct size
for k=1:n+1
t(k,:) = x(n+k:-1:length(h)+k-2);
end
显然检查指数是否正确(我认为它们是正确的)。
答案 2 :(得分:1)
您可以使用bsxfun
n = 5;
k = 4; % number of columns of result
x = [zeros(1,n) randn(1,n) zeros(1,n)]; % your data
t = x(bsxfun(@plus, (1:n+1).', n:-1:n-k+1 )); % result