2011-09-14 5 views
2

지금까지 내가 읽은 것과이 오류는 프로그램 내에서 혼동되거나 중복 된 이름 지정으로 인해 발생할 수 있지만 모든 것이 명확하게 선언되었으므로 여기에 문제가 있다고 생각하지 않습니다. 이 문제에서 볼 수있는 것은 조각 별 선언에서 나옵니다. 그러면 다음과 같은 통합을 통해 실행되고 있기 때문에 프로그램은 존재하지 않는 배열 셀에 액세스하려고 시도하고 있습니다. 이 경우 나는 지금까지이 문제를 해결하는 방법에 난처했다. 이 문제에 대한 도움을 주시면 감사하겠습니다. 다음과 같이??? 비 구조 배열의 필드를 참조하려고합니다. 오류

syms t k n 

fct = @(t)evalin(symengine,['subs(piecewise([0 <= t and t < 2,',... 
'sin((Pi*t^2)/4)],[t <= 2 and t < 3, 5*t-t^2-6], [t <=3 and t < 4, 0],',... 
       '[Otherwise, t-4]),t=',regexprep(mat2str(x),' ',','),')']); 

evalin(symengine,'assume(k,Type::Integer)'); 

a = @(fct,t,k) int(fct*cos(k*pi*t/4)/4,t,-2,8); 
b = @(fct,t,k) int(fct*sin(k*pi*t/4)/4,t,-2,8); 

FourierSeries = @(fct,t,n) a(fct,t,0)/4 + ... 
symsum(a(fct,t,k)*cos(k*pi*t/4) + b(fct,t,k)*sin(k*pi*t/4),k,1,n); 

pretty(FourierSeries(t,25,1)) 



ezplot(FourierSeries(t,25,1),-2,8) 
hold on 
ezplot(fct,-2,8) 
hold off 
title('Partial sum with n=25') 

전체 오류 텍스트는 다음과 같습니다

??? 비 구조 배열의 필드를 참조하려고합니다.

== sym.int at 56 r = mupadmex ('symobj :: intdef', f.s, x.s, a.s, b.s); ==에

오류> @ (FCT, t, k)는 INT (FCT * COS (케이 *의 파이 * t/4)/4, t, -2,8) ==에

오류> (fct, t, k) * cos (k * pi * t/4) + b (fct, t, k) * 죄 (케이 *의 파이 *의 t/4), K, 1 N) ==에

오류> 16 매우에서 FourierProgram (FourierSeries (t, 25,1))

+0

??? 비 구조 배열의 필드를 참조하려고합니다. 이 단순히 데이터 형식 오류입니까? 그렇다면 내 프로그램의 원래 'fct'는 구조체 배열로 쉽게 변환되거나 실제로 cell2struct와 같은 것을 사용하여 첫 번째 장소로 정의 될 수 있습니까? – Carl

+0

[이 오류 메시지가있는 기존 질문] (http://stackoverflow.com/search?q=%22%3F%3F%3F+Attempt+to+reference+field+of+non-structure+array%22)을 참조하십시오.) 거기서 해결책을 시도하십시오. 아무 것도 작동하지 않으면 해당 정보로 질문을 업데이트하십시오 :) – abcd

답변

0

이를 물었다 오래 전부터, 그러나 나는 결코 하나가 주어지지 않았기 때문에 대답을 줄 것이다. 당신의 오류가 나타난 바와 같이

, 문제는이 라인이며, 익명 함수 a 호출 방법 :

a = @(fct,t,k) int(fct*cos(k*pi*t/4)/4,t,-2,8); 

sym/int 함수는 두 번째 인수 (통합이에 대하여 수행되는 변수를 기대)를 기호 변수로 사용합니다. 그러나 FourierSeries(t,25,1)을 호출하면 25 값이 통합 변수로 전달됩니다. (이이 질문을 받았다 때 2011 년에 다시)

코드의이 비트는 matlab에 당신의 version에서 문제를 복제해야합니다

syms t k; 
int(t*cos(k*pi*t/4)/4,25,-2,8) 

그러나, R2015a에서 지금 얻을 다른 (그리고 조금 더 명확한) 오류 메시지 :

'에 관련하여 통합 할 수 없습니다. 통합 변수는 기호 변수 여야합니다.

관련 문제