Verfasst am: 11.06.2015, 17:57
Titel: Werte einer laufvariable in einer schleife generiert
Hallo ich habe eigentlich ein ziemlich triviales Problem. Ich weiß nicht, ob es an meiner neuen Matlab-Version liegt oder ob ich kurz dumm geworden bin.
Ich möchte in einer Schleife einfach x{1},x{2},x{3} usw erzeugen und hab dafür diese Schleife generiert
for i=1:elemente;
for j=1:3;
xx{j}=N{j}*COORD(node_connectivity(i,j),1);
yy{j}=N{j}*COORD(node_connectivity(i,j),2);
end
x{i}=xx{1}+xx{2}+xx{3}
y{i}=yy{1}+yy{2}+yy{3} end
Ich hab jetzt schon ewig herumprobiert, aber ich bekomme immer den Fehler: "Cell contents assignment to a non-cell array object."
sobald ich die geschweiften Klammern vor dem = weg lasse funktioniert es
sprich:
tja man könnte mal den debugger an der stelle setzen und sich die variablen angucken. natürlich nur wenn man das nicht durch ein nutzloses clear all verhindert.
da der code so nicht lauffähig ist. denke ich mal es liegt an "Cell contents assignment to a non-cell array object."
für weitere informationen bräuchte ich ein beispiel das den fehler reproduziert. sonst muss man da zu viel raten für meinen geschmack.
i und j sind übrigens die imaginären einheiten und sollten nicht als laufvariablen benutzt werden.
_________________
for m=1:elemente;
for n=1:3;
xx{n}=N{n}*COORD(node_connectivity(m,n),1);
yy{n}=N{n}*COORD(node_connectivity(m,n),2);
end
x{m}=xx{1}+xx{2}+xx{3};
y{m}=yy{1}+yy{2}+yy{3};
end
%% x=sum von 1-3 Ni*xie für jedes Element for m=1:elemente;
for n=1:3;
xe{n}=N{n}*COORD(node_connectivity(m,n),1);
ye{n}=N{n}*COORD(node_connectivity(m,n),2);
end
x{m}=xe{1}+xe{2}+xe{3};
y{m}=ye{1}+ye{2}+ye{3};
end
%% B-Matrix für jedes Element for m=1:elemente;
Bz1=[diff(N{1},Xi)*(1/diff(x{m},Xi)),0,diff(N{2},Xi)*(1/diff(x{m},Xi)),0,diff(N{3},Xi)*(1/diff(x{m},Xi)),0];
Bz2=[0,diff(N{1},eta)*(1/diff(y{m},eta)),0,diff(N{2},eta)*(1/diff(y{m},eta)),0,diff(N{3},eta)*(1/diff(y{m},eta))];
Bz3=[diff(N{1},Xi)*(1/diff(x{m},Xi)),diff(N{1},eta)*(1/diff(y{m},eta)),diff(N{2},Xi)*(1/diff(x{m},Xi)),diff(N{2},eta)*(1/diff(y{m},eta)),diff(N{3},Xi)*(1/diff(x{m},Xi)),diff(N{3},eta)*(1/diff(y{m},eta))];
Auf diese wiese hatte ich angefangen, um den Überblick in der Schleife nicht zu verlieren. Wenn ich die einzelnen Schleifen jedoch zusammenführe wird der Fehler erzeugt.
Code:
%% x=sum von 1-3 Ni*xie für jedes Element for m=1:elemente;
for n=1:3;
xe{n}=N{n}*COORD(node_connectivity(m,n),1);
ye{n}=N{n}*COORD(node_connectivity(m,n),2);
end
x{m}=xe{1}+xe{2}+xe{3};
y{m}=ye{1}+ye{2}+ye{3};
%end
%% B-Matrix für jedes Element
%for m=1:elemente;
Bz1=[diff(N{1},Xi)*(1/diff(x{m},Xi)),0,diff(N{2},Xi)*(1/diff(x{m},Xi)),0,diff(N{3},Xi)*(1/diff(x{m},Xi)),0];
Bz2=[0,diff(N{1},eta)*(1/diff(y{m},eta)),0,diff(N{2},eta)*(1/diff(y{m},eta)),0,diff(N{3},eta)*(1/diff(y{m},eta))];
Bz3=[diff(N{1},Xi)*(1/diff(x{m},Xi)),diff(N{1},eta)*(1/diff(y{m},eta)),diff(N{2},Xi)*(1/diff(x{m},Xi)),diff(N{2},eta)*(1/diff(y{m},eta)),diff(N{3},Xi)*(1/diff(x{m},Xi)),diff(N{3},eta)*(1/diff(y{m},eta))];
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.