Matrix dimensions to create for loop?

Hi all. I have rr(6x200) matrix. I want to find Rc and V matrixes for each 200 column, I showed below for one column:
Rc=toeplitz(rr(1:6)); %Rc(6x6)
V=Rc\eye(6,1); %V(6x1)
In the end, I need V matrix (6x200) but because of Rc is (6x6) matrix I could not create for loop.

1 Comment

You meant R= toeplitz(rr(:,k)), where k runs from 1 to 200?

Sign in to comment.

 Accepted Answer

Guillaume
Guillaume on 16 May 2016
Edited: Guillaume on 16 May 2016
I'm not sure why you can't use a loop:
V = zeros(size(rr));
denum = eye(size(rr, 1), 1); %so it's not recreated 200 times in the loop
for col = 1 : size(rr, 2)
Rc = toeplitz(rr(:, col));
V(:, col) = Rc \ denum;
end
Alternatively:
denum = eye(size(rr, 1), 1);
V = cell2mat(cellfun(@(col) toeplitz(col)\denum, num2cell(rr, 1), 'UniformOutput', false))
The loop is likely to be marginally faster.

More Answers (2)

You can use a for-loop:
rr = rand(6,200) ;
[nr,nc] = size(rr) ;
X = eye(nr,1) ; % take it out of the loop
V = zeros(nr,nc) ; % pre-allocation
for k=1:nc % loop over columns
Rc = toeplitz(rr(:,k)) ;
V(:,k) = Rc \ X ;
end
jack star
jack star on 16 May 2016
Both works fine, thanks a lot.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 16 May 2016

Answered:

on 16 May 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!