首页 > 解决方案 > MATLAB函数错误无解

问题描述

今天在我的 Uni 课程中,我遇到了一个问题,建议的解决方案就是这个(我做了些许修改)。但它比我的实际解决方案有更多错误,它有什么问题?

这是功能:

function result = fc(t, T)
f0= 50;
T=1/f0;
omega0= 2*pi*f0;
step = T/100;
t= -T : step : 2*T;
result = zeros(1, length(t) );
for index_t =1: length(t);
if mod( t (index_t), T ) < T/2;
    result(index_t) = 1;
else
    result(index_t) = -1;
end
end


a0over2 = 1/T * integral(@(t)fc(t, T), 0, T);

N=10;
a=zeros(1, N);
 b=zeros(1, N);
for k=1:N
a(k) = 2/T* integral(@(t)fc(t, T) .*cos(k* omega0*t), 0,T);
b(k) = 2/T * integral(@(t)fc(t, T) .*sin(k* omega0*t), 0,T);
end

我得到的错误是:

Undefined function or variable 'fc'.

Error in asdadad>@(t)fc(t,T)

Error in integralCalc/iterateScalarValued (line 314)
            fx = FUN(t);

Error in integralCalc/vadapt (line 132)
        [q,errbnd] = iterateScalarValued(u,tinterval,pathlen);

Error in integralCalc (line 75)
    [q,errbnd] = vadapt(@AtoBInvTransform,interval);

Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);

Error in asdadad (line 17)
a0over2 = 1/T * integral(@(t)fc(t, T), 0, T);

我应该做些什么?

标签: matlab

解决方案


这一切都保存在一个文件中吗?即,问题fc似乎是未定义的。这是一条错误消息(未定义的函数),其中包含通过所有被调用的子例程的堆栈跟踪,最后在代码的第 17 行结束。保存fc.m为单独的函数并将其他所有内容保存在脚本中(最好使用比 更合理的名称asdadad)并且它应该运行。


推荐阅读