2014-01-16 1 views
0

저는 MATLAB을 처음 사용하고 셀 배열의 for 루프에 문제가 있습니다. 52x52 셀 어레이 B 있습니다. 모든 셀에는 51x51 매트릭스가 있습니다. B의 첫 번째 행에있는 모든 셀에 대해 추적을 계산하고 벡터에서 추적 요소를 원한다 (그리고이를 스플라인으로 부드럽게 만들기를 원함). dbmuscs 변수는 매번 SQEDddbmus이 아닌 덮어 쓸 수 있습니다. 나는 다음 코드 줄을 가지고 있지만이 오류가 점점 계속 :for cell array

X = 1:51;     
xx = linspace(1,51,250); 
SQED = zeros(1,52); 
dbmus = zeros(1,52); 
ddbmus = zeros(1,52); 
for i = 1:52 
    SQED(i) = sum(diag(B{1,i})); 
    dbmus = transpose(diag(B{1,i})); 
    cs = spline(X,[dbmus(1),dbmus,dbmus(end)]);  
    ddbmus(i) = ppval(cs,xx);       
end 

In an assignment A(I) = B, the number of elements in B and I must be the same.가 어떻게이 문제를 해결할 수 있습니까?

+0

즉 for 루프 내의 줄 중 하나가 요소에 벡터를 배치하려고합니다. 어떤 줄에서 오류가 발생합니까? for 루프 내부의 첫 번째 또는 마지막 문입니다. – jerad

+1

'dbstop if error'를 사용하고 변수의 크기/유형을 확인하십시오. – Daniel

답변

0

ppval은 모든 점에서 스플라인을 xx으로 평가합니다. 그것은 벡터를 생성합니다. 그런 다음 벡터를 ddbmus(i)에 저장하려고합니다.이 벡터는 스칼라입니다.

전체 벡터를 행렬의 행 (또는 열)에 저장하려고합니다. 그럴 경우 :

ddbmus = zeros(52, 250); 
for i = 1:52 
    % ... existing code 
    ddbmus(i, :) = ppval(cs,xx); 
end 
+0

Peter 님,이 문제를 해결했습니다! – Ben