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

Plot des Geschwindigkeitsprofils an der Stelle x

 

floh91
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2009, 15:46     Titel: Plot des Geschwindigkeitsprofils an der Stelle x
  Antworten mit Zitat      
Hallo,

ich habe ein kleines Problem und zwar habe ich eine ASCII Datei mit 3 Werten (x, y und v = Geschwindigkeit)

Zitat:
Beispiel:
X Y v (Geschwindigkeit)
2.08 0.16 0.000796
2.17 0.16 0.000781
2.26 0.16 0.000734
2.35 0.16 0.000655
2.08 0.251 0.000868
2.17 0.251 0.000859
2.26 0.251 0.000815
2.35 0.251 0.000735
2.45 0.251 0.000627



Die Geschwindigkeit wird immer entlang eines konstanten y aufgeschrieben für alle x, siehe Beispiel.
Mich interessieren nun aber das Geschwindigkeitsfeld entlang eines konstanten x und da habe ich mal den folgendenen m.file geschrieben, der mir jedoch Fehler zeigt und nun weiß ich nicht weiter. Vielleicht kann mir ja hier jemand helfen:

Code:
%% Geschwindigkeit an der Stelle x
clear all
close all

display('Plot des Geschwindigkeitsprofils an der Stelle x.')

% Datei importieren
Daten = uiimport('-file');

%% Daten ordnen

% Groesse feststellen
n = size(Daten.Daten);

% Daten zuordnen mit einer Zaehlschleife
i=1;
k=1;
while i<=n(1);
    x(k) = Daten.Daten(i);
    i = i+1;
    y(k) = Daten.Daten(i);
    i = i+1;
    c(k) = Daten.Daten(i);
    i = i+1;
    k = k+1;
end

display('test')
% Wunschwerte eingeben (vielleicht muss man sich dazu den Verlauf von x
% ansehen)

figure; plot(x,'o');
k=1;
while k == 1;
X = input('x-Wert:');
e = input('Toleranz:');

% Daten filtern

for i = 1:n(1)/3;
    if x(i) > X-e;
        if x(i) < X+e;
            Y(k) = y(i);
            C(k) = c(i);
            k = k+1;
        end
    end
end

if k == 1;
    display('Konnte keine Daten filtern. Möglicherweise ist der Toleranzwert zu klein.')
end
end
%% Daten plotten

% neues Fenster
figure;

% Plot formatieren
set(gca,...
     'Gridlinestyle','-','xMinorGrid','off','yMinorGrid','off',...
     'Fontname', 'Helvetica','fontsize',20);
set(1,'units','centimeters','position',[0 0 8 8], ...
     'PaperOrientation', 'portrait', 'PaperPositionMode', 'auto',...
     'papersize',[14 10]);
xlabel('Geschwindigkeit [m/s]')
ylabel('y-Position [mm]')

% Plotten
plot(Y,C)

% Speichern

eingabe = input('Soll die Grafik gespeichert werden? J/N [J]:','s');
if isempty(eingabe)
    eingabe = 'N';
end
if eingabe == 'J';
    ordner = uigetdir('','Ordner auswählen: ');
        cd(ordner);
        name = input('Dateinamen eingeben','s');
        if isempty(name);
            name = ['Geschwindigkeitsprofil',num2str(i),'.png'];
        else
            x = size(name);
            name(1,x(2)+1:x(2)+4) = '.png';
        end
        print('-dpng',name)
end


der Fehler kommt an Zeile 13

Zitat:
Plot des Geschwindigkeitsprofils an der Stelle x.
??? Reference to non-existent field 'Daten'.

Error in ==> Geschwindigkeitsplot at 13
n = size(Daten.Daten);


Was kann oder besser muss ich hier verändern?

Bin für jeden Tip dankbar.
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 25.02.2009, 15:54     Titel:
  Antworten mit Zitat      
Moin,

irgendwas stimmt an der Zeile
Code:
n = size(Daten.Daten);

nicht. Hast du denn mit uiimport ein Feld Daten.Daten angelegt?

Was spuckt dir denn
Code:
aus, wenn du das direkt nach dem uiimport eingibst?

Gruß
Alex

Edit by Bijick: Code-Formatierung repariert. Bitte in Zukunft... Smile
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 25.02.2009, 15:56     Titel:
  Antworten mit Zitat      
Meintest du vielleicht Daten.data ??? = default
Private Nachricht senden Benutzer-Profile anzeigen
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2009, 16:00     Titel:
  Antworten mit Zitat      
steve hat Folgendes geschrieben:
Moin,

irgendwas stimmt an der Zeile [code]n = size(Daten.Daten);[code]
nicht. Hast du denn mit uiimport ein Feld Daten.Daten angelegt?

Was spuckt dir denn [code]whos Daten[/code] aus, wenn du das direkt nach dem uiimport eingibst?

Gruß
Alex[/code]


da spukt er mir das da aus


Zitat:
Plot des Geschwindigkeitsprofils an der Stelle x.
Name Size Bytes Class Attributes

Daten 1x1 10396 struct

??? Reference to non-existent field 'data'.

Error in ==> Geschwindigkeitsplot at 15
n = size(Daten.data);


also diese Zeile:

Zitat:
n = size(Daten.Daten);


Kann man diese vielleicht irgendwie anders schreiben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2009, 16:20     Titel:
  Antworten mit Zitat      
Code:
Daten = uiimport('-file');
öffnet doch ein Dialogfenster, was machst du dort? Davon (und ob. zb Überschriften in der Datei stehen) hängt es ab, unter welchem field name die Daten stehen.
Was sagt
Code:
Daten = uiimport('-file');
fieldnames(Daten)
?
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2009, 16:49     Titel:
  Antworten mit Zitat      
Anonymous hat Folgendes geschrieben:
Code:
Daten = uiimport('-file');
öffnet doch ein Dialogfenster, was machst du dort? Davon (und ob. zb Überschriften in der Datei stehen) hängt es ab, unter welchem field name die Daten stehen.
Was sagt
Code:
Daten = uiimport('-file');
fieldnames(Daten)
?


Also zu erstens:

Es wird ein Dialogfenster geöffnet und ich lade die entsprechende ASCII Datei.

Schreibe ich fieldnames(Daten), so erhalte ich z.B.:

Zitat:
Plot des Geschwindigkeitsprofils an der Stelle x.

ans =

'ls_02938_vel'

??? Reference to non-existent field 'Daten'.

Error in ==> Geschwindigkeitsplot at 14
n = size(Daten.Daten);


'ls_02938_vel' ist der Name der entsprechenden ASCII Datei. Die Datei hat keine Überschriften, sondern besteht aus 3 Spalten Zahlen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2009, 16:57     Titel:
  Antworten mit Zitat      
Dann sind die Daten unter Daten.ls_02938_vel zu erreichen.
Du musst also schreiben
Code:
n = size(Daten.ls_02938_vel);
usw.
Für ein flexibles Einlesen ist das aber nicht so geeignet, du müsstest ja immer den Dateinamen ändern (denn der wird als fieldname genommen).
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2009, 17:20     Titel:
  Antworten mit Zitat      
Danke, jetzt klappt es.

Gibt es eine Möglichkeit, dass ich nach dem filenamen abgefragt werde und ich diesen eingeben muss oder dass man eine Verküpfung erstellt mit deren Hilfe man alle Datenfiles durchlaufen lassen kann.

Die Datenfiles haben alle die gleichen Namen:

ls_00001_vel bis (ungefähr) ls_05999_vel

wäre ziemlich mühselig alle per Hand einzulesen.

Danke schön schon einmal für eure Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2009, 17:31     Titel:
  Antworten mit Zitat      
Sieh mal hier:
http://www.gomatlab.de/datei-einlesen-dynamisch-t4019.html#14533 gibt aber noch mehr Beispiele im Forum.
Statt
Code:

schreib mal [/code]Daten=load(names{1,f})[/code]. Und das *.xls musst du auch an deine Dateien anpassen, dann müsste der Rest so bleiben können (Muss dann mit in die Schleife).
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2009, 11:22     Titel:
  Antworten mit Zitat      
Danke schön,

habe noch einmal ein anderes Problem mit diesem file und hoffe ihr könnt mir helfen.

In Zeile 39 bis 47 habe ich

Code:

% Daten filtern


for i = 1:n(1)/3;
    if x(i) > X-e;
        if x(i) < X+e;
            Y(k) = y(i);
            C(k) = c(i);
            k = k+1;
        end
    end
end


... das bringt mir jedoch mit

Code:
% Plotten
plot(Y,C)


eine Gerade und der Verlauf ist alles andere als eine Gerade, also wollte ich es ändern in:

Code:
aa = Daten.ls_02938_vel
yy=find(aa(:,1)>x-e & aa(:,1) < x+e);
bb=aa(yy,:);


Wenn ich das separat ausplotte mit:

Code:
plot (bb(:,3),bb(:,2));


dann bekomme ich den exakten Geschwindigkeitsverlauf. Füge ich es jedoch in den m.file ein, dann erhalte ich folgende Fehlermeldung:

Zitat:
??? Error using ==> lt
Matrix dimensions must agree.

Error in ==> Geschwindigkeitsplot at 40
yy=find(aa(:,1)>x-e & aa(:,1) < x+e);


Was kann ich hier machen?
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 26.02.2009, 11:25     Titel:
  Antworten mit Zitat      
Irgenwie scheinen die Größen der Vektoren nicht zu stimmen.

Vergleiche mal
Code:
size_aa = size(aa);
size_x = size(x);


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2009, 12:16     Titel:
  Antworten mit Zitat      
Ja, jetzt läuft es Very Happy ... und alles überflüssige Zeug ist rausgeflogen.

Danke schön noch einmal !!!
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.