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

Jos (10584)
Jos (10584) 2016년 5월 16일
You meant R= toeplitz(rr(:,k)), where k runs from 1 to 200?

댓글을 달려면 로그인하십시오.

 채택된 답변

Guillaume
Guillaume 2016년 5월 16일
편집: Guillaume 2016년 5월 16일

0 개 추천

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.

추가 답변 (2개)

Jos (10584)
Jos (10584) 2016년 5월 16일

0 개 추천

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 2016년 5월 16일

0 개 추천

Both works fine, thanks a lot.

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2016년 5월 16일

답변:

2016년 5월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by