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

mehrfache Rechnungspeichern u in Matlab behalten vergleichen

 

kahn
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2013, 19:26     Titel: mehrfache Rechnungspeichern u in Matlab behalten vergleichen
  Antworten mit Zitat      
Code:
%Das ist mein Programm
bzs=input('Bitte geben Sie die gewünschte zähnelänge ein = ');
a=input('Bitte geben Sie die gewünschte zähnelänge ein = ');
b=input('Bitte geben Sie die gewünschte zähnelänge ein = ');


i=0
for k=0:0.5:2
    bzs=bzs+k
% Die rechnung findet hier Statt.

    i=i+1
   
    for l= 0:0.5:2
        a=a+l
   
        for m=0:0.5:1
            b=b+1
           
            d=9
            z=11
            c=14
B{i}={'bzs';'a';'b';'d';'z';'c'}
C=[bzs;a;b;d;z;c]
for k=1:length(C);                  
    A.(B{i})=C(i);
end
xlswrite('test.xlsx', [C; B{i}]);
end
end
end
 


Hallo an alle,


ich habe folgendes Problem.

ich habe Matlab mit einem Extern Programm verbunden, die Rechnung läuft ohne Problem durch.

jetzt möchte ich meine Rechnung automatisieren,also ich habe die Variablen und die setze ich in for schleife und lass es durchrechnen. Die berechneten Werten möchte ich in Matlab immer behalten am Ende vergleichen und auswerten.

nebenbei möchte ich die Werten auch in excel speichert haben. Da ich vielleicht 20 Rechnung nacheinander machen werde,möchte ich gern die Werten nacheinander "in einem Excel" gespeichert haben.

ich habe dafür die Folgendes geschrieben die variabeln geben ich erst als input ein. bis zum speichern alles top aber beim Speichern kann ich nicht klar kommen.

als ein Schema hab ich meine Gedanken bisschen deutlicher gemacht. im Anhang findet ihr einmal die Befehle und ein mal ein Schema.
Im Schema meinte ich die linkte Seite die vorlaufe in Matlab und rechte seite wie in excel sein sollte.

ich bin noch Anfänger und kann sein dass ich paar befehle durcheinander gemacht habe.

freue mich sehr wenn Ihr es euch angucken könntet.
Besten Dank.

schema.png
 Beschreibung:

Download
 Dateiname:  schema.png
 Dateigröße:  10.62 KB
 Heruntergeladen:  1024 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.10.2013, 23:10     Titel:
  Antworten mit Zitat      
Hallo,

es ist schwierig zu erahnen, was dein Programm genau machen soll.
Gehe doch mal mit dem Debugger schrittweise durch und schaue, wo genau der Fehler sind.

Ein paar Probleme, die ich sehe:
Code:
for k=1:length(C);                  
    A.(B{i})=C(i);
end

ist so nicht sinnvoll. Vermutlich willst du den Schleifenindex auch in der Schleife nutzen? k würde ich nicht verwenden, da der Index der äußeren Schleife schon k ist.

Du schreibst immer in die selbe Excel-Datei und überschreibst sie somit in jeder Iteration.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
kahn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2013, 01:06     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für deine Antwort und deine Bemerkung. kann sein dass Du mich nicht ganz verstanden hast, da die deutsche Sprache nicht meine Muttersprache ist.

ich formuliere es noch einmal,

erst mal vergessen wir mal in Excel speichern!

ich berechne immer ungefähr Zehn werte und speichere ich die als txt Datei.
eigentlich muss ich die nicht als txt Datei speichern da ich die danach einlesen möchte,dachte ich mir wäre besser wenn ich die erst die ganze speichere damit ich danach einlesen.

sieht also so aus. 1.txt a=1 b=2 c=3 ....
2.txt a=1 b=2 .......
.
.
.

so geht es wieter. In einem Ordner vielleicht 100 txt Datei,in denen immer 10 Variabeln gibt und die in der Abhängigkeit von einer berechneten Wert abgespeichert ist(ich weiss es nicht ob es wichtig ist aber)

Es ist mir jetzt das Problem, das ich diese txt Daten in Matlab auswerte.

ich möchte z.B bei jeden Txt Datei a und b einlesen und in matlab auswerten. ich weiss es nicht leider wie es weitergehen wird.

Vielleicht wäre noch einandere möglichkeit,dass ich Die ganze Berechnung nicht als einzeln txt speichere(sonst habe ich 100 Stück txt Datei) sondern nach jeder Berechnung,die Werte als String speichere damit ich die danach aufrufen kann.

aber ich weiss es nicht leider wie es gehen kann.

freue mich wenn du mir paar tipps geben könntest

Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.10.2013, 08:38     Titel:
  Antworten mit Zitat      
Hallo,

einfacher ist es wahrscheinlich, wenn du dir zunächst überlegst, wie du einen Parameter variieren kannst. Das würde ich so machen:

Code:
C = zeros(numRuns, 5);
for I=1:numRuns
C(I,:) = Ergebnisse von I-tem Durchlauf
end


Falls dir Englisch leichter fällt: es gibt auch englischsprachige MATLAB-Foren, z.B. "MATLAB Answers".

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
kahn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2013, 18:26     Titel:
  Antworten mit Zitat      
Code:
clear all
clc
k=0; a=3; b=4; c=5; d=6; e=6; f=1; g=7;

%%%%%%%%%%%%%%%%%%%%%Die Berechnug wird hier durchgeführt!

for i=1:10;
    k=0.1;
    a=a+k;
bereich={'a';'b';'c';'d';'e';'f';'g'}
anzahl=length(bereich)

    C = zeros(anzahl,i);
C(:,i) = [a;b;c;d;e;f;g]

  %g.(bereich{i})=C(i);
end
 


Hallo Harald,

ich habe mir das schon mal geschrieben.Das Problem ist bei dem,das alles einfach überschreibt.ich will am ende das was gerechnet wird alles sehen uns aufrufen können.

ich will aber dazu schreiben haben.
ich habe auch den Befehl g.(bereich{i})=C(i); als Kommentar geschrieben..ich dachte mir ,es sollte so funktieren aber,funktiniert nicht und weiss ich nicht woran es liegt.

freue mich sehr wenn du dir nochmal angucken könntest

Vielen Dank Im voraus

Grüße,
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.10.2013, 18:59     Titel:
  Antworten mit Zitat      
Hallo,

das Vorbelegen muss natürlich VOR die Schleife (wie auch gezeigt)! Solche Probleme kann man mit dem Debugger auch leicht selbst feststellen.

Was soll "g.(bereich{i})=C(i);" denn genau bewirken? Davon abgesehen, dass C eine Matrix ist und du daher Zeilen-Spalten-Indizierung verwenden solltest:
C(zeile, spalte)

Wenn du wirklich vor dem Ausführen des Skripts den Workspace leeren willst, dann verwende clear und nicht clear all. Mit clear all werden nämlich auch Haltepunkte entfernt und Funktionsdefinitionen aus dem Speicher gelöscht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
kahn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2013, 09:28     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort.
Vor der letzten Schritt sieht es so aus.

Code:

k=0; a=3; b=4; c=5; d=6; e=6; f=1; g=7;

%%%%%%%%%%%%%%%%%%%%%Die Berechnug wird hier durchgeführt!
bereich={'a';'b';'c';'d';'e';'f';'g'}
anzahl=length(bereich)
Iteleration=10
    C = zeros(anzahl,Iteleration);
for i=1:Iteleration;
    k=0.1;
    a=a+k;
C(:,i) = [a;b;c;d;e;f;g]
end



dazu wollte auch diesen Befehl hinzufügen
g.(bereich{anzahl})=C(anzahl);

ich meinte damit "g.(bereich{anzahl})=C(anzahl);" dass ich C Matrix = bereich entsprechen also

a
b
c
d = Matrix C(anzahl,Iteleration)
e
f
g

Code:
for t=1:anzahl
    g.(bereich{anzahl})=C(anzahl);
end


aber dieses funktinert nicht,ich verstehe es auch nicht warum..freue mich wenn du dir es nocheinmal angucken könntest

danke für dein Geduld
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.10.2013, 10:17     Titel:
  Antworten mit Zitat      
Hallo,

wenn, dann müsstest du t auch in der Schleife als Index verwenden.

Mir erschließt sich aber nach wie vor nicht, warum du dieses g überhaupt erstellst bzw. was du damit machen willst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
kahn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2013, 10:57     Titel:
  Antworten mit Zitat      
Hallo Harald,


ich wollte mit g verwenden da ich noch eine for schleife haben werde und dann wollte ich die ergebnisse nicht durcheinander wird. mit dem g könnte ich die Werten dann aufrufen.

jetzt was Du gesagt hast,kann ich mir nicht vorstellen..

meinst du so

Code:

k=0; a=3; b=4; c=5; d=6; e=6; f=1; g=7;

%%%%%%%%%%%%%%%%%%%%%Die Berechnug wird hier durchgeführt!
bereich={'a';'b';'c';'d';'e';'f';'g'}
anzahl=length(bereich)
Iteleration=10
    C = zeros(anzahl,Iteleration);
for i=1:Iteleration;

    k=0.1;
    a=a+k;
C(:,i) = [a;b;c;d;e;f;g]
g.(bereich{Iteleration})=C(Iteleration)
end

 


ich habe es mit einem kleinem Beispiel versucht klar zu kommen
Code:

   rechnung=[1,2;3,4]  
bereiche={'k';'f'}
   for k = 1:length(rechnung)                                  
  g.(bereiche{k})=rechnung(k);
   end
   


es funktinert..

Code:

   rechnung=[1,2,3,4 ; 5,6,7,8]  
bereiche={'k';'f'}
   for k = 1:length(bereiche)
  g.(bereiche{bereiche})=rechnung(bereiche);
   end
   


aber es funktiert nicht..

verstehe nicht woran der Unterscheid liegen soll.. :/
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.10.2013, 12:33     Titel:
  Antworten mit Zitat      
Hallo,

es ist immer schwierig, etwas zu einem Code zu sagen, wenn man nicht weiß, was er genau machen soll. Das folgende gibt keine Fehlermeldung und wäre meines Erachtens sinnvoll:

Code:
  rechnung=[1,2,3,4 ; 5,6,7,8]  
bereiche={'k';'f'}
   for I = 1:size(bereiche,2)
  g.(bereiche{I})=rechnung(I,:);
   end


Und natürlich, es macht einen Unterschied ob man den Schleifenindex als Variable in der Schleife verwendet oder irgendetwas anderes.

Grüße,
Harald
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 - 2024 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.