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 speichern, 2Dateinamen, in Schleife

 

Skipper
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 15.01.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 31.01.2011, 11:37     Titel: Plot speichern, 2Dateinamen, in Schleife
  Antworten mit Zitat      
Hallo,

ich habe eine Schleife zur Auswertung von Messdateien geschrieben, hier ein kleiner Auszug:
Code:
close all
clear all

answer = 'Weiter';
while strcmp(answer, 'Weiter')
% Dateiauswahl mit uigetfile; an bereits ausgewählte Dateien dranhängen, auf korrekte
% Zuordnung der passenden Pfade achten
answer = questdlg('Bitte 2 gewünschte Dateien auswählen!', 'Weitere Dateien', 'Weiter', 'Abbruch', 'Weiter');

[filename, pathname] =uigetfile({'*.txt'},'MultiSelect','on');
anzahl = length(filename);
M = cell(1, anzahl);
for I = (1:anzahl);
M{I} = dlmread(fullfile(pathname, filename{I}), '\t');


a_x{I} = M{I}(:,2);
a_y{I} = M{I}(:,3);
a_z{I} = M{I}(:,4);


%--------------------------- In x-Richtung-------------------------------

Laenge_x{I} = length(a_x{I}); %Window length

%window function
window = hamming(Laenge_x{I});
a_x_fft{I} = a_x{I}.*window;

NFFT_x{I} = 2^nextpow2(Laenge_x{I}); %Transform length, Next power of 2 from length of x

fs=2000;
Xf = fft(a_x_fft{I},NFFT_x{I}); % DFT of x
freq = (0:NFFT_x{I}-1)*(fs/NFFT_x{I});

%Amplitude_x
Amplitude_x{I} = abs(Xf)/Laenge_x{I};
%Leistung
Leistung = Xf.*conj(Xf)/NFFT_x{I};
%Phase
Phase = unwrap(angle(Xf));



%--------------------------------------------------------------------------
% Plot the first half of the periodogram, up to the Nyquist frequency
% Plot single-sided Amplitude_LL1_x spectrum (Amplitude_LL1_x vs. Frequency)
%--------------------------------------------------------------------------
Frequenz_x{I} = freq(1:floor(NFFT_x{I}/2))';
Amplitude_x{I} = 2*Amplitude_x{I}(1:floor(NFFT_x{I}/2));
Amplitude_x{I}(1) = Amplitude_x{I}(1)/2;
Phase = Phase(1:floor(NFFT_x{I}/2));
Leistung = 2*Leistung(1:floor(NFFT_x{I}/2));
Leistung(1)=Leistung(1)/2;



figure(1)
subplot(311);
plot (Frequenz_x{I},Amplitude_x{I});
set(gca,'XMinorTick','on');
set(gca,'YMinorTick','on');
set(gca,'XMinorGrid','on');
set(gca,'YMinorGrid','on');
set(gca,'Layer','top');
set(gca,'Box','on');
set(gca,'FontSize',12,'FontName','Arial');
xlabel('Frequenz LL_x [Hz]','FontSize',12,'FontName','Arial');
ylabel('Amplitude LL_x |X(f)| [m/s^2]','FontSize',12,'FontName','Arial');
hold all


subplot(312);
plot(Frequenz_x{I},Phase*180/pi);
set(gca,'XMinorTick','on');
set(gca,'YMinorTick','on');
set(gca,'XMinorGrid','on');
set(gca,'YMinorGrid','on');
set(gca,'Layer','top');
set(gca,'Box','on');
set(gca,'FontSize',12,'FontName','Arial');
xlabel('Frequenz LL_x [Hz]','FontSize',12,'FontName','Arial');
ylabel('Phase [Grad]','FontSize',12,'FontName','Arial');
legend=(filename(I));
hold all

nfft = 2^nextpow2(Laenge_x{I});
%PSD [Pxx,f] = periodogram(x,window,nfft,fs)
subplot(313)
periodogram(a_x{I},window,nfft,fs)
hold all


Das Ganze gibt es jetzt noch einmal für die y- und die z-Richtung.
Nun möchte ich die figures jeder Richtung speichern. Es soll dann eigentlich so aussehen:
'filename{1}'Vergleich'filename{2}'-Richtung.jpg
eventuell aber auch mit drei Dateinamen, also
'filename{1}'Vergleich'fileiname{2}'Vergleich'filename{3}'-Richtung.jpg

Ich habe es schon mit saveas und print versucht, leider funktioniert das mit dem filename{I} aber nicht...
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.01.2011, 13:54     Titel: Re: Plot speichern, 2Dateinamen, in Schleife
  Antworten mit Zitat      
Hallo Skipper,

Zitat:
'filename{1}'Vergleich'filename{2}'-Richtung.jpg
eventuell aber auch mit drei Dateinamen, also
'filename{1}'Vergleich'fileiname{2}'Vergleich'filename{3}'-Richtung.jpg

Ich habe es schon mit saveas und print versucht, leider funktioniert das mit dem filename{I} aber nicht...

Doch, es funktioniert. Du zeigst zwar eine Menge Code, aber eigentlich hast Du eine Frage zum SAVEAS und PRINT Befehl - die entsprechenden einzelnen Zeilen zeigst Du uns aber nicht.

Ich würde folgende Schritte empfehlen:
1. In "help saveas", "help save" etc steht einiges über die Befehle drin.
2. In den "Gettings Started"-Kapiteln der Matlab-Dokumentation wird das Manipulieren von Strings und Cell strings ausführlich behandlet. Lies es doch noch mal durch.
3. Wenn es dann immer noch Unklarheiten gibt, poste die relevante Zeile und erkläre die auftretenden Probleme genauer als mit "funktioniert nicht".

Gruß, Jan
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.