Azzera filtri
Azzera filtri

How to fix "Out of memory. The likely cause is an infinite recursion within the program. Error in integralCa​lc/iterate​ScalarValu​ed (line 312) [t,w] = u(x); % Transform back to the original domain."

1 visualizzazione (ultimi 30 giorni)
I am trying to run this fourier series but I am not sure why I am receiving this error
function result = dracu(t,T)
f0=50;
omega0=2*pi*f0;
T=1/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)dracu(t,T),0,T);
N=10;
a=zeros(1,N);
b=zeros(1,N);
for k=1:N
a(k) = 2/T * integral(@(t)(dracu(t,T).*cos(k*omega0*t)),0,T);
b(k) = 2/T * integral(@(t)(dracu(t,T).*sin(k*omega0*t)),0,T);
end
a;
b;
end

Risposte (2)

Walter Roberson
Walter Roberson il 23 Ott 2018
function result = dracu(t,T)
so you are within function dracu
a0over2 = 1/T * integral(@(t)dracu(t,T),0,T);
and in that function dracu, you ask to integrate the results of invoking dracu
for k=1:N
a(k) = 2/T * integral(@(t)(dracu(t,T).*cos(k*omega0*t)),0,T);
b(k) = 2/T * integral(@(t)(dracu(t,T).*sin(k*omega0*t)),0,T);
end
and more places that you are asking dracu to integrate the result of running itself.
You have not programmed in any termination, so you have infinite recursion.
Perhaps the lines starting from a0over2 = 1/T * integral(@(t)dracu(t,T),0,T); should be within a different file.

abdul rehman
abdul rehman il 22 Dic 2021
Modificato: Walter Roberson il 22 Dic 2021
% Bus Admittance Matrix
% Copyright (c) 1998 by H. Saadat.
function[Ybus] = ybus(zdata)
nl=zdata(:,1); nr=zdata(:,2); R=zdata(:,3); X=zdata(:,4);
nbr=length(zdata(:,1)); nbus = max(max(nl), max(nr));
Z = R + j*X; %branch impedance
y= ones(nbr,1)./Z; %branch admittance
Ybus=zeros(nbus,nbus); % initialize Ybus to zero
for k = 1:nbr; % formation of the off diagonal elements
if nl(k) > 0 & nr(k) > 0
Ybus(nl(k),nr(k)) = Ybus(nl(k),nr(k)) - y(k);
Ybus(nr(k),nl(k)) = Ybus(nl(k),nr(k));
end
end
for n = 1:nbus % formation of the diagonal elements
for k = 1:nbr
if nl(k) == n | nr(k) == n
Ybus(n,n) = Ybus(n,n) + y(k);
else, end
end
end
Out of memory. The likely cause is an infinite recursion within the program. i am facing this error

Categorie

Scopri di più su Get Started with MATLAB in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by