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

dmlwrite mit unterschiedl. langen Spalten

 

Matl_beginner
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2016, 18:23     Titel: dmlwrite mit unterschiedl. langen Spalten
  Antworten mit Zitat      
Servus zusammen,

Hab die Hilfe schon im WWW durchsucht aber nichts passendes gefunden, vllt seid ihr ja schlauer Smile

Variablen:
AL_int, AT_int (je 1x1334)
B1T_int, B1L_int (je 1x1259)
.
.
. das geht so weiter bis B5...

Mein import stammt aus einem txt file. Die Werte sind Messdaten, nicht zeitsynchron, dafür nutze ich interp1. Das hat zur Folge, dass die bisher gleich langen Tabellen in unterschiedliche Länge wachsen (was auch so gewollt ist da die Daten ja nicht die gleichen Werte haben).
Das erzeugt jedoch das Problem bei der Textausgabe mit:

dlmwrite ('D:\testdaten.txt',[AL_int; AT_int], 'delimiter', '\t'

Denn sobal ich weitere Variablen hinzufüge, welche schlussendlich eine andere Länge haben läuft der Export nicht durch, soweit logisch.

Das entstehende Problem lässt sich glaub ich aber nicht so leicht lösen, da:
1. Die interpolierten Daten wieder in ein File zurück müssen
2. Die "unbefüllten" Zeilen leer bleiben müssen, da bei den kommenden 1000 Messungen auch weiterhin die Länge der interpolierten Daten verschieden sein wird und ich (glaub ich zumindest) nur so dauerhaft einen sauberen Weiterimport durchführen kann.
3. Die jeweiligen werte B1(load) B1(time) hängen zusammen und dürfen ebenfalls nicht verändert werden.

Ich möchte natürlich am besten ein TXT file, das kann ich sauber und schnell weiter importieren und dafür eine Routine in der weiteren Auswertung mit MGraph anlegen. Ich habe schon den ganzen Tag das Internet bemüht, aber nichts passendes gefunden. Sad

Wäre die Ausgabe in Excel eine alternative?


Ich bin leider nicht sehr matlab bewandelt, es schien mir für meinen Fall aber einfachsten. Ich hoffe ihr könnt mir helfen Smile
Beste Grüße
Martin

Wichtig.m
 Beschreibung:

Download
 Dateiname:  Wichtig.m
 Dateigröße:  5.71 KB
 Heruntergeladen:  244 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2016, 22:05     Titel:
  Antworten mit Zitat      
Hallo,

ohne eine Beispieldatei ist es sehr schwierig, sich durch den auto-generierten Code durchzuarbeiten.

Normalerweise ist die Idee einer Interpolation ja gerade, dass man mit gleichen x-Vektoren arbeitet, um y-Vektoren gleicher Länge zu bekommen.

Wenn das nicht gewünscht ist, wäre eine Möglichkeit, die fehlenden Werte durch NaN aufzufüllen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2016, 22:11     Titel:
  Antworten mit Zitat      
Ja grundssätzlich hast du recht, aber:
Die Messdaten beziehen sich auf Längendifferenzen bei der Elongation von Schrauben während der Montage.
Aufgrund verschiederner Parameter sind Kraftwerte (y) niemals bei allen Schrauben gleich. Deshalb hast du mit unterschiedlichen Schrauben, bei gleichen Zeiten (x) verschiede (y) Kraftwerte...

Aufgrund asynchroner Messdaten wurde wie gesagt die Interpolation gewählt um auf einheitliche Zeitwerte zu kommen. Die Schlussendlich reinen Kraftdaten kann ich einfach in ein Xt Diagramm legen und vergleichen, ohne langen Nachformatierungsaufwand.


Also aktuell habe ich mit folgendem Code aufgefüllt, ich weiß nur noch nicht wie das mein Programm verarbeiten kann.

Code:
% Das ist mein Programm.
X = AL_int';
X(1:numel(B1L_int),2) = B1L_int';
X(1:numel(B2L_int),3) = B2L_int';
X(1:numel(B3L_int),4) = B3L_int';
X(1:numel(B4L_int),5) = B4L_int';
X(1:numel(B5L_int),6) = B5L_int';
 


Wie würde denn die Sache für NAN und ggf. empty array aussehen? Smile
Die aktuelle Ausgabe habe ich angehängt

testdaten2.txt
 Beschreibung:

Download
 Dateiname:  testdaten2.txt
 Dateigröße:  46.62 KB
 Heruntergeladen:  328 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2016, 22:32     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Aufgrund verschiederner Parameter sind Kraftwerte (y) niemals bei allen Schrauben gleich.

Die Werte nicht, deren Anzahl aber doch vielleicht? Insbesondere wenn du dann noch "bei gleichen Zeiten (x)" schreibst.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2016, 22:48     Titel:
  Antworten mit Zitat      
Nein leider nicht!

Können uns gerne mal bei nem Tässchen Kaffee über Schrauben und Vorspannkraftermittlung unterhalten, das wird aber an der Grundlegenden Problematik nichts ändern Wink
Wir haben hier keinen Code der sich immer gleich verhält, sondern reale Bauteile mit Werkstofffluktuationen, Gitterdefekten, inhomogenen Kriechen von Versetzungen usw...

Bitte zurück zum Thema Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.05.2016, 09:13     Titel:
  Antworten mit Zitat      
Hallo,

ich bin kein Experte für Schrauben und habe auch keine Ambitionen, einer zu werden. Mit MATLAB kenne ich mich jedoch ganz gut aus.

Wenn du, wie geschrieben, mehrere Größen auf dieselben x-Werte interpolierst, dann wirst du auch dieselbe Anzahl y-Werte bekommen. MATLAB ist es nämlich vollkommen egal, ob die Daten Längendifferenzen bei der Elongation von Schrauben, Geschwindigkeitsdaten eines Raumschiffs, Aktienkurse, oder sonst etwas sind.
In deinem Code ist das dritte Argument bei jedem interp1-Befehl ein anderes, du interpolierst also nicht auf dieselben x-Werte.

Anfügen von NaN, um einen Vektor auf Länge N zu bringen, ginge wie folgt:
Code:
v = [v; nan(max(N-numel(v),0), 1)]

Hat der Vektor schon Länge N oder ist er sogar länger, wird nichts hinzugefügt.

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 - 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.