1
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

Is there something wrong in the for loop? as my 1st iteration had no problem creating my row vector but when it comes in the for loop i could seem it make the loop run and the error msg i get is 'Subscripted assignment dimension mismatch.' I can't seem to find the mistake

For my case my final output i am should get is as follows

[x6 x5 x4 x3; x7 x6 x5 x4; x8 x7 x6 x5;x9 x8 x7 x6;x10 x9 x8 x7;x11 x10 x9 x8]

3 Answers 3

2

When I run it till the point where it is stuck, this is what I see:

You have a variable t of size 1x4

You try to append a row below it of size 1x5

Obviously it won't fit.

Judging from your description I would say the second row is too long.

Sign up to request clarification or add additional context in comments.

Comments

1

I think you probably want something like that:

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

Obviously check the indices are correct (I think they are).

Comments

1

You can do it more easily with 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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.