WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Werte einer laufvariable in einer schleife generiert

 

kojoteKarl
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.05.15
Wohnort: Freiberg
Version: R2013
     Beitrag Verfasst am: 11.06.2015, 17:57     Titel: Werte einer laufvariable in einer schleife generiert
  Antworten mit Zitat      
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
Code:
clear all
syms Xi eta;

% load 'Mesh_Tri_vCoarse'
% load 'Mesh_Tri_Coarse'
 %load 'Mesh_Tri_Fine'
% load 'Mesh_Tri_vFine'
 load 'Mesh_Tri_uniform'

N{1}(Xi,eta)=1-Xi-eta
N{2}(Xi,eta)=Xi
N{3}(Xi,eta)=eta

elementeM=size(node_connectivity)
elemente=elementeM(1,1)



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 Rolling Eyes
sprich:
Code:
xx=N{j}*COORD(node_connectivity(i,j),1);
        yy=N{j}*COORD(node_connectivity(i,j),2);

Ich steh gerad echt auf dem Schlauch, hoffentlich wisst ihr Rat oder habt eine elegantere Lösung um Werte abzuspeichern.

Vielen Dank
Mfg
kojo
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 11.06.2015, 18:18     Titel:
  Antworten mit Zitat      
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. Smile
da der code so nicht lauffähig ist. denke ich mal es liegt an "Cell contents assignment to a non-cell array object." Smile
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.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
kojoteKarl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.05.15
Wohnort: Freiberg
Version: R2013
     Beitrag Verfasst am: 11.06.2015, 18:47     Titel:
  Antworten mit Zitat      
Danke für die Antwort. Hier ein lauffähiges Modell
Code:
syms Xi eta;

% load 'Mesh_Tri_vCoarse'
% load 'Mesh_Tri_Coarse'
 %load 'Mesh_Tri_Fine'
% load 'Mesh_Tri_vFine'
% load 'Mesh_Tri_uniform'
node_connectivity=[1.0   2.0   3.0;3.0   4.0   1.0];
COORD=[0.0 0.0; 1.0 0.0; 1.0 1.0; 0.0 1.0];


N{1}(Xi,eta)=1-Xi-eta
N{2}(Xi,eta)=Xi
N{3}(Xi,eta)=eta


elementeM=size(node_connectivity)
elemente=elementeM(1,1)



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
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 11.06.2015, 19:25     Titel:
  Antworten mit Zitat      
das beispiel ist lauffähig. reprodziert aber den von dir erwähnten fehler nicht Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
kojoteKarl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.05.15
Wohnort: Freiberg
Version: R2013
     Beitrag Verfasst am: 13.06.2015, 18:50     Titel:
  Antworten mit Zitat      
Sorry bei mir funktioniert es jetzt auch ich hatte irgend etwas triviales vor dem Post entfernt.

Aber zu den ursprünglichen Fehler. Ich weiß jetzt wie ich ihn erzeugen kann.

Code:
syms Xi eta sigma u11 u12 u21 u22 u31 u32;

%load 'Mesh_Tri_vCoarse'
% load 'Mesh_Tri_Coarse'
 %load 'Mesh_Tri_Fine'
 %load 'Mesh_Tri_vFine'
load 'Mesh_Tri_uniform'
% node_connectivity=[1.0   2.0   3.0;3.0   4.0   1.0];
% COORD=[0.0 0.0; 1.0 0.0; 1.0 1.0; 0.0 1.0];

E=120000; %N/mm^2
nu=0.3;
N{1}(Xi,eta)=1-Xi-eta;
N{2}(Xi,eta)=Xi;
N{3}(Xi,eta)=eta;
C=E/((1+nu)*(1-2*nu))*[1-nu nu 0;
                       nu 1-nu 0;
                       0 0 (1-2*nu)/2];

elementeM=size(node_connectivity);
elemente=elementeM(1,1);

%% 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))];
   
         B{m}=[Bz1; Bz2; Bz3];
 end


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))];
   
         B{m}=[Bz1; Bz2; Bz3];
 end


MfG
kojo
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 13.06.2015, 20:57     Titel:
  Antworten mit Zitat      
da ich meshtri nicht habe wird bei mir kein fehler mit deinen
Zitat:
% node_connectivity=[1.0 2.0 3.0;3.0 4.0 1.0];
% COORD=[0.0 0.0; 1.0 0.0; 1.0 1.0; 0.0 1.0];

daten generoiert. der fehler muss dann also da liegen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.