|
delikanli81 |

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.03.2019, 12:41
Titel: For Schleife
|
 |
Hallo zusammen,
ich möchte mit einer for Schleife folgendes machen:
- es werden in die "alle_daten" zahlen hineingeschrieben und zwar immer in die erste Spalte.
- ich möchte in einer neuen Matrix (neu) die Ergebnisse -nach jedem durchlauf- in neue Spalten hineingeschrieben haben.
Fehlermeldung:
Subscripted assignment dimension
mismatch.
Error in SM_1 (line 23)
neu(:,i)=alle_daten(:,1);
[leer, text, Daten]=xlsread('s_11_temperaturaenderung_bezug_und_lieferung_3019','Daten','A:B');
Fehler=str2double(text(:,2))/1000;
ParamName=cellstr(text(:,1));
n=9;
P_Plus='P+';
P_Minus='P-';
Temperatur={'-40'; '-25'; '-10'; '+5'; '+23'; '+30'; '+40';'+55'; '+70' };
for i=1:n
TF=[contains(ParamName(:,1), P_Plus),contains(ParamName(:,1), Temperatur(i,1))];
TF(:,3)= TF(:,1).*TF(:,2);
x=TF(:,3)*1;
zeile=find(x);
alle_daten=(Fehler(zeile,1));
neu(:,i)=alle_daten(:,1);
end
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.496
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.03.2019, 14:22
Titel:
|
 |
Hallo,
vermutlich bekommst du in jeder Iteration unterschiedlich viele Daten. Das könntest du mit dem Debugger analysieren.
Eine Möglichkeit kann sein, die Daten in einem Cell Array zu sammeln.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
delikanli81 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 10:53
Titel:
|
 |
Hallo Harald,
vielen Dank; das ist genau der Punkt denke ich. Allerdings weiß ich nicht wie ich das Problem lösen kann.
Ich habe versucht für "neu" die Zellgröße zu definieren aber ohne Erfolg.
neu{i}=alle_daten(:,1);
ergibt folgendes Ergebnis, siehe Anhang
Beschreibung: |
|
 Download |
Dateiname: |
neu.pdf |
Dateigröße: |
87.36 KB |
Heruntergeladen: |
284 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.496
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 11:00
Titel:
|
 |
Hallo,
aus meiner Sicht ist das eine Lösung. Was möchtest du denn haben? Eine Matrix mit unterschiedlich vielen Zeilen geht jedenfalls nicht.
Es scheint ja in jeder Datei ein Vielfaches von 28 zu sein. Dann könnte man die Inhalte des Cell Arrays verketten und in eine 28xn-Matrix umwandeln.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
delikanli81 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 11:06
Titel:
|
 |
Für
alle_daten(:,i)=(Fehler(zeile,1));
müssten doch alle Daten nacheinander in die Spalte i geschrieben werden => auch das hilft nicht.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.496
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 11:33
Titel:
|
 |
Hallo,
deswegen habe ich dir ja einen anderen Vorschlag gemacht.
Hast du den Befehl denn mal versucht? Mit welchem Ergebnis?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
delikanli81 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 11:56
Titel:
|
 |
sorry, die Nachrichten haben sich überschnitten. Danke für den Tipp, das funktioniert ohne Fehlermeldung. ABER: Das Problem ist allerdings, dass die Zellen bei 28 abgeschnitten werden und die Leeren Zellen nicht berücksichtigt werden.
D.h. ich benötige schon ein flexibles Array alle_daten, in das ich "alles mögliche" hineinschreiben lassen kann (je nach welche Zellen ich in zeile=find(x); finde). Die Spalten sollten so beibehalten werden, weil ich diese Daten dann im Anschluss in eine Excel-Datei mit fester Spaltenordnung einfügen möchte.
Es wundert mich, dass man ein Array Spalte für Spalte vorher schon definieren muss.
Gibt es hierfür wirklich keine andere Möglichkeit ein "flexibles Array zu definieren?
|
|
|
delikanli81 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 12:11
Titel:
|
 |
könnte man evtl in die Schleife -bei jedem Durchlauf- die Spaltenzahl für alle_daten auslesen und das Array entsprechend (innerhalb des Durchlaufs) definieren?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.496
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 12:49
Titel:
|
 |
|
 |
|
Hallo,
Zitat: |
D.h. ich benötige schon ein flexibles Array alle_daten, in das ich "alles mögliche" hineinschreiben lassen kann (je nach welche Zellen ich in zeile=find(x); finde). Die Spalten sollten so beibehalten werden, weil ich diese Daten dann im Anschluss in eine Excel-Datei mit fester Spaltenordnung einfügen möchte. |
Genau das wäre an sich das Cell Array neu.
Zitat: |
Gibt es hierfür wirklich keine andere Möglichkeit ein "flexibles Array zu definieren? |
Das ist das Cell Array ;)
Zitat: |
könnte man evtl in die Schleife -bei jedem Durchlauf- die Spaltenzahl für alle_daten auslesen und das Array entsprechend (innerhalb des Durchlaufs) definieren? |
Verstehe ich nicht. Meinst du wenn nicht die Zeilenzahl?
Die einzige Alternative, die ich noch sehe, ist eine Matrix zu erstellen, in der die fehlenden Werte auf NaN gesetzt werden. Dem Screenshot zufolge also 56 Zeilen, von denen innerhalb einer Spalte ggf. die untere Hälfte oder sogar die ganze Spalte NaN ist.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
delikanli81 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 13:38
Titel:
|
 |
Das Cell Array ist durch die Angabe "28" auf 28 Zeilen beschränkt; also alles was in alle_daten abgelegt wird MUSS 28 oder ein vielfaches an Zahlen haben.
Es kommt aber vor, dass beliebig viele Zahlen in die Spalten geschrieben werden müssen... Deshalb war mein Wunsch einer "flexible Zelle".
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.496
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 14:33
Titel:
|
 |
Hallo,
nein, das Cell Array neu ist nicht beschränkt. Da stehen ja z.B. auch die 56 Werte drin, siehe dein Screenshot.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
delikanli81 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 14:54
Titel:
|
 |
ja, aber in der falschen Spalte. Sprich, nachdem in Spalte 1 die 28 aufgefüllt sind, wird mit der Spalte 2 weiter befüllt.
Kann man nicht vorher schon ein Array definieren mit 100x100, nur mit Nullen und dann mit
alle_daten(:,i)=(Fehler(zeile,1));
alles füllen?
langsam werden ich nervös
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.496
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 15:30
Titel:
|
 |
|
 |
|
Hallo,
Zitat: |
ja, aber in der falschen Spalte. Sprich, nachdem in Spalte 1 die 28 aufgefüllt sind, wird mit der Spalte 2 weiter befüllt. |
Das stimmt nicht. Überzeuge dich bitte selbst anhand deines Screenshots. Nochmal: es geht gerade um das Cell Array neu, nicht meinen Vorschlag für neu2.
Zitat: |
ja, aber in der falschen Spalte. Sprich, nachdem in Spalte 1 die 28 aufgefüllt sind, wird mit der Spalte 2 weiter befüllt. |
Klar kann man:
Zitat: |
und dann mit
alle_daten(:,i)=(Fehler(zeile,1))
alles füllen? |
Wenn die rechte Seite nicht 100 Werte beinhaltet, dann ist es ja gerade nicht alles, was gefüllt werden muss.
Das war ja bereits mein Vorschlag, allerdings müsstest du händisch auffüllen, z.B. mit NaN.
Zitat: |
langsam werden ich nervös Sad |
Daran kann ich leider nichts ändern. Ich würde dir auch gerne schneller helfen. Dazu müsste ich aber von Anfang an verstehen, wo genau das Problem liegt.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
delikanli81 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 23.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 15:50
Titel:
|
 |
Hallo Harald,
ok, also ich habe im Anhang versucht die Aufgabe zu beschreiben. Schau's Dir bitte mal an.
Danke und Grüße,
Delikanli
Beschreibung: |
|
 Download |
Dateiname: |
Aufgabenstellung.pdf |
Dateigröße: |
273.17 KB |
Heruntergeladen: |
317 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.496
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.03.2019, 16:00
Titel:
|
 |
Hallo,
und genau das liefert doch das Cell Array neu, oder?
Du hast diesen Vorschlag ja versucht und ich weiß immer noch nicht recht, was das Problem mit diesem Vorschlag ist.
Auch für den Fall, dass du lieber eine Matrix möchtest, habe ich dir bereits zweimal eine Vorgehensweise vorgeschlagen. Hier ein Beispiel für die Umsetzung:
Bei Rückfragen gehe bitte genau auf die Vorschläge und die Probleme mit ihnen ein. Ansonsten kann ich dir leider nicht weiterhelfen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|