|
|
nur bestimmte werte verwenden |
|
ms1080 |

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 02.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009
|
 |
|
|
 |
|
Verfasst am: 23.02.2010, 19:56
Titel: nur bestimmte werte verwenden
|
 |
|
 |
|
hi
ich bin wirklich ein blutiger neuling, was das programieren mit matlab betrifft, deswegen hoffe ich hier schnell hilfe zu bekommen. mein problem ist, dass ich eine txt-datei habe, in der viele werte stehen, ich aber eigenlich nur ein drittel der werte brauche. die datei ist folgendermaßen aufgebaut:
zeile 1-10 sind uninteressant und sollen weggelassen werden.
ab da sind dann werte in drei spalten untereinander aufgereit.
insgesammt sind es 1200 mal 250 zeilen.
interessant für mich ist jeweils nur die dritte spalte bzw. der dritte wert jeder zeile. diese werte brauche ich um daraus ein 3d bild zu plotten. wichtig ist dabei nur, das ich jedesmal nach 1200 werten eine neue spalte anfange, soll heißen, ich will eine matrix mit 250 spalten und 1200 zeilen erzeugen, die ich dann plotten will.
Frage 1: geht das überhaupt?
Frage 2: wie? ich wollte es mit einer for schleife machen, weiß aber nicht, wie ich dem programm sage, das es jedesmal nur den dritten wert der zeile einliest, und nach 1200 werten eine neue spalte aufmacht!
bitte um hilfe
hier mein aktueller fortschritt:
clear;
z=1;
n=1; %Anzahl der datein
%einlesen der Datei
fid = fopen('D:\bsp.txt');
rawdata = textscan(fid,'%f %f %f','headerlines',10); %Überschrift entfernen
fclose(fid);
%Matrix erzeugen
for z=1:1201
z=z+1;
end
die datei habe ich auch mit angehängt, schonmal danke für eure hilfe.
Beschreibung: |
|
 Download |
Dateiname: |
bsp.txt |
Dateigröße: |
4.02 MB |
Heruntergeladen: |
1031 mal |
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.02.2010, 20:03
Titel:
|
 |
Hallo,
überspringen von Daten mit *, z.B. %*f.
Die Daten sind dann ein langer Vektor. Den kann man mit reshape umwandeln, z.B.
Grüße,
Harald
|
|
|
ms1080 |
Themenstarter

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 02.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009
|
 |
|
|
 |
|
Verfasst am: 23.02.2010, 21:18
Titel:
|
 |
okay, danke
also dann ohne for schleife einlesen, richtig?
gruss ms
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.02.2010, 22:17
Titel:
|
 |
|
|
ms1080 |
Themenstarter

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 02.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009
|
 |
|
|
 |
|
Verfasst am: 24.02.2010, 09:31
Titel:
|
 |
also leider funktioniert das so nicht. matlab sagt mir:
??? Error using ==> reshape
To RESHAPE the number of elements must not
change.
Error in ==> Test at 10
data = reshape(data, 1200, 250);
was mach ich falsch?
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 24.02.2010, 10:53
Titel:
|
 |
Hallo
du machst irgend wie Blödsinn, du willst doch eingelesene Daten reshapen.
Warum machst du dann das?
statt
und wozu dient noch diese Zeile?
|
|
|
ms1080 |
Themenstarter

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 02.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009
|
 |
|
|
 |
|
Verfasst am: 24.02.2010, 11:07
Titel:
|
 |
ja okay war dumm von mir, also die textscanzeile kann natürlich weg
danke das mit der matrix funktioniert jetzt, wie gesagt bin blutiger anfänger bei matlab.
okay vielleicht könnt ihr mir ja jetzt noch ein wenig weiter helfen:
als 1. will ich nun den mittelwert bilden und ausgeben:
richtig so? wie kann ich nun alle werte in der matrix, die genau 1 sind ausschließen, also nicht mit in die Berechnung des Mittelwertes einfließen lassen.
wollte das mit dem befehl
machen, aber ich bin bestimmt schonwieder viel zu blöd dazu.
sorry
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 24.02.2010, 11:27
Titel:
|
 |
Hi,
mit find folgendermaßen:
eleganter geht es so:
Gruß Jan
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 24.02.2010, 12:19
Titel:
|
 |
Hallo
bin mir unsicher, ob ich richtig verstanden habe, du willst doch Einsen in data ausschließen, oder?
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 24.02.2010, 12:48
Titel:
|
 |
Hi,
hast du vermutlich vollkommen richtig verstanden, ich habe den Vektor schlichtweg falsch bennant.
|
|
|
ms1080 |
Themenstarter

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 02.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 11:08
Titel:
|
 |
@ denny, danke für deine hilfe, aber leider funktioniert das so nicht ganz richtig, weil mein mittelwert viel zu klein ist.
kann es sein, das er bei dieser methode einfach alle werte die 0 1 sind nicht betrachtet, aber dann doch mit zur anzahl dre gesamten werte rechnet
mfg martin
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 11:18
Titel:
|
 |
Nein, tut 'er' nicht. Der Vektor wird gekürzt, entsprechend stimmt auch die Anzahl der Gesamtwerte.
Setz doch einfach mal ein paar Debugpunkte, und guck dir im Debugmodus genau an, mit welchen Vektoren gerechnet wird, und was evtl. schief läuft.
Gruß Jan
|
|
|
ms1080 |
Themenstarter

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 02.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 12:16
Titel:
|
 |
Also hier gleich mal vielen danke für eure hilfe, habe das jetzt erstmal ganz gut hinbekommen soweit, vielen dank fürs erste
hier die Lösung:
nun will ich das alles noch grafisch darstellen, aber nur den oberen teil, für tipps bin ich immer offen
mfg martin
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 12:24
Titel:
|
 |
Hallo
ja das tut es, ich habe ja die Einsen nur durch Nullen ersetzt, Anzahl der Elemente hat dadurch in der Matrix nicht verändert.
Wenn du wirklich die Einträge nicht Zählen möchtest,
muss du wohl in der Schleife rechnen
|
|
|
ms1080 |
Themenstarter

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 02.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009
|
 |
|
|
 |
|
Verfasst am: 02.03.2010, 12:04
Titel:
|
 |
okay das funktioniert soweit, danke nochmals an alle die mir geholfen haben, nun will ich das alles ausgeben usw. als 3d bild.
hierbei sind aber wieder nur die größeren werte von interesse bzw sollen nur dargestellt werden.
könnt ihr mir da tipps dazu geben?
|
|
|
|
|
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.
|
|