MATLAB: Matrix dimensions to create for loop

matrix for loop

Hi all. I have rr(6×200) 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 (6×200) but because of Rc is (6×6) matrix I could not create for loop.

Best Answer

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.