Verfasst am: 10.04.2008, 07:31
Titel: Figure in pdf-Format speichern
Hallo,
ich habe mal wieder ein kleines Problem.
also ich erstelle ein Figure mit einem Subplot und lasse das dann als PDF speichern. Das Ganze erfolgt über ein kleines GUI und wird dafür verwendet um von Messreihen ein Formular zu erstellen. Soweit funktioniert das ganze auch. Aber wenn ich eine andere messreihe habe, dann überschreibt er im pdf nur die Werte und löscht die anderen nicht.
ich denke, dass die figure irgendwie geschlossen werden müßte oder so. aber ich weiß nicht genau wie.
Hier der Teil meines Programm wo die pdf erstellt wird!
Code:
function pdf_Callback(hObject, eventdata, handles) warning off
% messnr aus dem GUI auslesen
messnr_ = get(handles.edit1,'String');
messnr=str2double(messnr_);
path='E:\Matlab_absor\Formulare\';
los=[path messnr_ '.pdf'];
% die PDF löschen delete(los);
% Eigenschaften der Messung auslesen [datum,probennr,zusatz]=messeigenschaften(messnr);
[temp,luft]=temp_luft(datum);
[A,d_loch,a_loch,h_platte,material,a_platte]=probe(probennr) % Absorptionsgrad bestimmen [f,alpha] = absorptionsgrad(messnr,A);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Formular erstellen
h=figure(2);
% Größe festlegen set(h,'PaperPosition',[321626],...
'PaperSize',[20.9829.68],'PaperType','a4letter');
% es soll keine graphik erstellt werden set(h,'visible','off ');
% subplot 1: Schallabsorptionsgrad subplot(3,1,1);
% Kurve zeichnen
h=semilogx(f,alpha,'r-d');
% Größe festlegen set(gca,'Units','centimeters','Position',[1.51710.76]);
hold on; grid on;
% Linien sicker zeichnen set(h,'linewidth',1.5) % Beschriftung der Graphik xlabel('Frequenz [Hz]','FontSize',11);
ylabel('Schallabsorptionsgrad \alpha','FontSize',11);
title(['Schallabsorptionsgrad \alpha'],'FontSize',16) % Beschriftung und Skalierung der x-Achse set(gca, 'XTick',[0,400,1000,2000,4000,6000,8000], ...
'XTickLabel',{'0','400','1000','2000','4000','6000','8000'}) % Skalierung der Achsen axis([0,8000,0, 1.1]) % Text einfügen text(400,1.5,['Schallabsorptionsgrad von Probe ', num2str(probennr)],'FontSize',20);
text(900,1.38,['Messung ',num2str(messnr),' vom ',num2str(datum)], 'FontSize' ,14);
text(8500,1.,[ 'Temperatur:']);text(15000, 1,[num2str(temp) '° C'],'FontSize',11);
text(8500,0.92,[ 'Luftfeuchte:']);text(15000,0.92,[num2str(luft) ' %' ],'FontSize',11);
text(8500,.84,[ 'Probenr:']);text(15000,.84,[num2str(probennr)],'FontSize',11);
text(8500,.76,[ 'Zusatz:']);text(8500,.68,[zusatz],'FontSize',11);
% subplot 2: Tabelle subplot(3,1,2) % Größe festlegen set(gca,'Units','centimeters','Position',[013.5162]);
% Linien der Tabelle ziehen
x=[0:12/15:12;0:12/15:12]; y=[0;1.2];
x1=[012];y1=[00]; x2=[012];y2=[0.60.6]; x3=[012];y3=[1.21.2];
plot(x,y,'k',x1,y1,'k',x2,y2,'k',x3,y3,'k');
axis off; axis([0,12,0, 1.2]) % Beschriftung Tabellenkopf text(.35,.85, ['f'],'FontSize',11);text(.3,.3,['\alpha'],'FontSize',11+2);
% Tabelle füllen
pos_t=0.95;
alpha=alpha.*100;
alpha=round(alpha);
alpha=alpha./100;
for i=1:length(f)
alpha1=num2str(alpha(i));
f1=num2str(f(i));
text(pos_t,.85, f1,'FontSize',11);text(pos_t+0.05,.3, alpha1 ,'FontSize',11);
if f(i) == 800
pos_t=pos_t+0.75;
else
pos_t=pos_t+0.8;
end end % subplot 3: Probenaufbau subplot(3,1,3) % Größe festlegen set(gca,'Units','centimeters','Position',[03.588]);
% Linien ziehen
v=[010]; w=[00]; w1=[2*12*1;2*22*2;2*32*3;2*42*4;2*52*5];
hold on;
% Boden zeichnen plot(v,w,'k','linewidth',1.7); plot(v,w1,'k');
% Achsen werden nicht gezeichnet und Skalierung festlegen axis off; axis([0,16,-2, 2*5]);
% einzelnen Ebenen zeichnen
stemp=0:0.3:9.9;
for i=1:33
stemp1(i,:)=[stemp(i) stemp(i+1)];
end
stemp2=[0;-.3];
plot(stemp1,stemp2,'k');
for i=1:length(w(:,1))-1 % Pfeifen zeichnen im Probenaufbau plot([11],[w(i)+0.16 w(i)+0.16],'kv','MarkerSize',5.5);
plot([11],[w(i+1)-0.16 w(i+1)-0.16],'k^','MarkerSize',5.5);
plot([11],[w(i)+0.16 w(i+1)-0.16],'k') end % Beschriftung des Probenausbaus for j=1:length(d_loch) % num2str(d_loch(j)) if a_platte(j) >=0 text(1.2,q,['a_{Platte}= ' num2str(a_platte(j)) ' mm '],'FontSize',11);
text(10.2,p,material(j),'FontSize',11);
if d_loch(j)==0 text(10.2,q, ['h_{Platte}= ', num2str(h_platte(j)) ' mm ' ] ,'FontSize',11);
else text(10.2,q, ['d_{Loch}= ' num2str(d_loch(j)) 'mm; a_{Loch}= ', num2str(a_loch(j)) ' mm, h_{Platte}= ', num2str(h_platte(j)) ' mm ' ] ,'FontSize',11);
end
p=p+2;q=q+2;
end end % die PDF zeichnen
Hi, ich habe mal die Quote-Umgebung durch die Code-Umgebung ersetzt. Hast Dich sicher verklickt. nschlange
1.pdf
Beschreibung:
Bei dem ersten subplot (s.Anhang) sieht man am rand noch den vorigen Plot. Komischerweiße ist bei letzten subplot das Problem nicht, bei einer anderen Messreihe stehen dort ganz andere Werte
irgendwie funktioniert das nicht,
es kommt folgende fehlermeldung:
??? Error using ==> inputcheck>LocalCheckHandles at 196
Error using ==> inputcheck>LocalCheckHandles at 196
Handle Graphics handle must be a Figure.
Error in ==> inputcheck at 28
pj.Handles = [ pj.Handles LocalCheckHandles(cur_arg) ];
Error in ==> print at 172
[pj, devices, options ] = inputcheck( pj, varargin{:} );
Error in ==> gui_absorptionsgrad>pdf_Callback at 270
print(h,'-f2', '-dpdf', [path file])
Error in ==> gui_mainfcn at 96
feval(varargin{:});
Error in ==> gui_absorptionsgrad at 42
gui_mainfcn(gui_State, varargin{:});
jetzt kommt keine fehlermeldung mehr, aber das problem mit dem überschreiben besteht immer noch!
kann ich ihm nicht irgendwie sagen er soll ein neues dokument nehmen?
lg
Dann sollte es auch funktionieren, wenn ich mich nicht total täusche
Gruß
Alex
Sailor
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.12.2008, 15:34
Titel:
Hallo
Damit in jedem neuem PDF nur die neuen Grafiken gespeichert werden, muss man den Inhalt der figure leeren. D.h.: Vor dem ersten subplot Befehl solltes du folgendes einfügen:
Hallo,
ich habe denke ich mal ein ähnliches Problem.
Beim ausführen folgendes Codes kommt immer die Fehlermeldung unten.
Leider kann ich mit dieser nichts anfangen. Hat da jemand mehr Ahnung?
Vielen Dank schon mal.
Code:
%ermitteln der Position des aktuellen Fensters und zoom auf Ursprungliche größe setzen
Warning: Failed in CreateDIBSection, OpenGL application
error (bmp00000000,pix00000000,gle00000000)
> In C:\Program Files\MATLAB\R2010b2\toolbox\matlab\graphics\hardcopy.p>hardcopy at 21
In graphics\private\render at 142
In print at 316
In protokollsavefcn at 51
In mysavefcn at 35
Warning: Problems in UIW_SetUpGLPrinting
> In C:\Program Files\MATLAB\R2010b2\toolbox\matlab\graphics\hardcopy.p>hardcopy at 21
In graphics\private\render at 142
In print at 316
In protokollsavefcn at 51
In mysavefcn at 35
??? Error using ==> print at 364
Problem converting PostScript. System returned error:
-1.Failed to convert to output format; Ghostscript status:
-100.Error: /undefined in bplotndefined
Operand stack:
Execution stack:
Error in ==> protokollsavefcn at 51
print(f2 ,'-loose','-opengl','-r0','-dpdf',file);
Error in ==> mysavefcn at 35
protokollsavefcn(f1handles,f1data);
??? Error while evaluating uipushtool ClickedCallback
Gruß Schäfchen
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
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.