Cell contents assignment to a non-cell array object.
Ältere Kommentare anzeigen
hi.
i dont know why in my code is keeping me sending this error anybody can help me please my code is:
A=input('Dame el sistema de ecuaciones expresado en forma matricial');
b=input('Dame el valor de b');
k=1;
x=input('Dame el valor x0 inicial');
x{1}=x;
r{k}=(A*x{k})-b;
p{k}=-(r{k});
for k=0:10000000000;
alfa{k}=(-(((r{k}')*r{k})/((p{k}')*(A*p{k}))));
x{k+1}=x{k}+(alfa{k}*p{k});
r{k+1}=r{k}+(alfa{k}*A*p{k});
beta{k+1}=((r{k+1})'*r{k})/((r{k}')*(r{k}));
p{k+1}=-(r{k+1})+(beta{k+1}*p{k});
k=k+1;
if (r{k}<=0)
break;
end
end
and the error is the next
*Cell contents assignment to a non-cell array object.*
*Error in gradientesconjugados (line 5)*
*x{1}=x;*
if anybody can help me i would apreciate so much.
5 Kommentare
Mahdi
am 29 Mai 2014
Why are you defining the variables in a cell when you want to perform calculations on them? Why not just use matrices and then convert the result into a cell?
James Tursa
am 29 Mai 2014
Bearbeitet: James Tursa
am 29 Mai 2014
How many iterations do you expect this to take before the break happens? If the iterations go all the way to 10000000000, that will take about 2.7 terabytes of memory just to hold the variable header information (60 bytes each), and probably a gazillion hours of time since you are increasing the size of these cell arrays within a loop.
José
am 29 Mai 2014
José-Luis
am 29 Mai 2014
Have you tried the debugger?
Antworten (2)
Azzi Abdelmalek
am 29 Mai 2014
Try this
clear
A=input('Dame el sistema de ecuaciones expresado en forma matricial');
b=input('Dame el valor de b');
k=1;
xx=input('Dame el valor x0 inicial');
x{1}=xx;
r{k}=(A*x{k})-b;
p{k}=-(r{k});
for k=0:10000000000;
alfa{k}=(-(((r{k}')*r{k})/((p{k}')*(A*p{k}))));
x{k+1}=x{k}+(alfa{k}*p{k});
r{k+1}=r{k}+(alfa{k}*A*p{k});
beta{k+1}=((r{k+1})'*r{k})/((r{k}')*(r{k}));
p{k+1}=-(r{k+1})+(beta{k+1}*p{k});
k=k+1;
if (r{k}<=0)
break;
end
end
3 Kommentare
Also, change the for statement to be:
for k=2:10000000000;
If your goal is to populate the elements after the first one you inputted.
Even then, I don't think it will work because you'll get NaN's as outputs.
Azzi Abdelmalek
am 29 Mai 2014
Have you cleared your variable x?
Udit Gupta
am 29 Mai 2014
Instead of
x=input('Dame el valor x0 inicial');
x{1}=x;
use
temp=input('Dame el valor x0 inicial');
x{1}=temp;
3 Kommentare
José
am 29 Mai 2014
Udit Gupta
am 29 Mai 2014
In the same lines as before?
Udit Gupta
am 29 Mai 2014
I ran this code without any error. You need to start your loop from k=1 instead of k=0.
A=input('Dame el sistema de ecuaciones expresado en forma matricial');
b=input('Dame el valor de b');
k=1;
temp=input('Dame el valor x0 inicial');
x{1}=temp;
r{k}=(A*x{k})-b;
p{k}=-(r{k});
for k=1:10000000000;
alfa{k}=(-(((r{k}')*r{k})/((p{k}')*(A*p{k}))));
x{k+1}=x{k}+(alfa{k}*p{k});
r{k+1}=r{k}+(alfa{k}*A*p{k});
beta{k+1}=((r{k+1})'*r{k})/((r{k}')*(r{k}));
p{k+1}=-(r{k+1})+(beta{k+1}*p{k});
k=k+1;
if (r{k}<=0)
break;
end
end
Kategorien
Mehr zu Holidays / Seasons finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!