지금까지 내가 읽은 것과이 오류는 프로그램 내에서 혼동되거나 중복 된 이름 지정으로 인해 발생할 수 있지만 모든 것이 명확하게 선언되었으므로 여기에 문제가 있다고 생각하지 않습니다. 이 문제에서 볼 수있는 것은 조각 별 선언에서 나옵니다. 그러면 다음과 같은 통합을 통해 실행되고 있기 때문에 프로그램은 존재하지 않는 배열 셀에 액세스하려고 시도하고 있습니다. 이 경우 나는 지금까지이 문제를 해결하는 방법에 난처했다. 이 문제에 대한 도움을 주시면 감사하겠습니다. 다음과 같이??? 비 구조 배열의 필드를 참조하려고합니다. 오류
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))
??? 비 구조 배열의 필드를 참조하려고합니다. 이 단순히 데이터 형식 오류입니까? 그렇다면 내 프로그램의 원래 'fct'는 구조체 배열로 쉽게 변환되거나 실제로 cell2struct와 같은 것을 사용하여 첫 번째 장소로 정의 될 수 있습니까? – Carl
[이 오류 메시지가있는 기존 질문] (http://stackoverflow.com/search?q=%22%3F%3F%3F+Attempt+to+reference+field+of+non-structure+array%22)을 참조하십시오.) 거기서 해결책을 시도하십시오. 아무 것도 작동하지 않으면 해당 정보로 질문을 업데이트하십시오 :) – abcd