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

in PDF plotten

 

Helveticus
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 08.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2014, 23:22     Titel: in PDF plotten
  Antworten mit Zitat      
Hallo

Ich möchte für eine Prüfung ein cheat sheet erstellen (ist open book, somit legal) und dachte dabei an Matlab. Es geht um folgendes.

Ich möchte 1/[(1+i)^n] für verschiedene i und n berechnen und in einem pdf plotten.

i sollte von 0.01, 0.02, 0.03 bis 0.30 gehen und n von 1 bis 10.

Hier einmal eine kleine grafische Darstellung wie ich das PDF gerne haben möchte.

Code:
(i = 0.01, n = 1)         (i = 0.02, n = 1)       (i = 0.03, n = 1)  
(i = 0.01, n = 2)         (i = 0.02, n = 2)       (i = 0.03, n = 2)  
....                             ....                          .....
(i = 0.01, n = 10)       (i = 0.02, n = 10)     (i = 0.03, n = 10)  


(i = 0.04, n = 1)         (i = 0.05, n = 1)       (i = 0.06, n = 1)  
(i = 0.04, n = 2)         (i = 0.05, n = 2)       (i = 0.06, n = 2)  
....                             ....                          .....
(i = 0.04, n = 10)       (i = 0.05, n = 10)     (i = 0.06, n = 10)  


....



Natürlich könnte man auch mehr als 3 Kolonnen machen und es in einer Tabelle formatieren.

Die Präzision sollte bei 4 Nachkommastellen sein.

Könnte mir da jemand helfen?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

ich würde dazu die publish-Funktionalität nutzen. Die Tabelle könnte man als table darstellen.
Code:


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 08.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2014, 21:36     Titel:
  Antworten mit Zitat      
Ich habe es jetzt mit uitable probiert.

Code:
f = figure('name','1/[(1+i)^n]','NumberTitle','off','Position',[100 100 300 150]);
rnames = [];
date = [];
for i = 1:30
   rnames = {rnames, sprintf('interest %i\%',i)}; %#ok<*AGROW>
   for j = 1:10
      if j == 1
            date = [date, 1 / ((1 + (i / 100))^j)];
      else
           date = [date, 1 / ((1 + (i / 100))^j)];
      end
   end
end
% date=[2 , 3 ; 4 ,7 ];
cnames = {'year 1','year 2','year 3','year 4','year 5','year 6','year 7','year 8','year 9','year 10'};
t = uitable('Data',date,'ColumnName',cnames,...
'RowName',rnames,...
'Parent',f,'Position',[20 20 250 100]);



Es sollte folgende Tabelle erstellen:

Code:
                     year 1   year 2   year 3.....
interest 1%      ....        .....       ......
interest 2%      ....        .....       ......
interest 3%      ....        .....       ......
....
....



Aber es funktioniert nicht. Was mache ich falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.06.2014, 21:48     Titel:
  Antworten mit Zitat      
Hallo,

so läuft dein Code:

Code:
f = figure('name','1/[(1+i)^n]','NumberTitle','off','Position',[100 100 300 150]);
rnames = [];
date = [];
for i = 1:30
   rnames = [rnames; {sprintf('interest %i%%',i)}]; %#ok<*AGROW>
   for j = 1:10
      if j == 1
            date = [date, 1 / ((1 + (i / 100))^j)];
      else
           date = [date, 1 / ((1 + (i / 100))^j)];
      end
   end
end
% date=[2 , 3 ; 4 ,7 ];
cnames = {'year 1','year 2','year 3','year 4','year 5','year 6','year 7','year 8','year 9','year 10'};
t = uitable('Data',reshape(date, 30, 10),'ColumnName',cnames,...
'RowName',rnames,...
'Parent',f,'Position',[20 20 250 100]);


Wäre aber schön, auch auf Vorschläge einzugehen und diese zu nutzen...

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 08.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2014, 09:05     Titel:
  Antworten mit Zitat      
Vielen Dank. Das Problem ist jetzt aber noch, dass die Tabelle nur ganz klein ist. Ich sehe da nur ein Feld und es hat dafür Scrollbars. Ich möchte keine Scrollbars, da ich die Tabelle ja ausdrücken möchte.

Zitat:

Wäre aber schön, auch auf Vorschläge einzugehen und diese zu nutzen..


Du hast mir ja empfohlen eine table zu benutzen, das habe ich ja gemacht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich schrieb von Tables, nicht UITables.

http://www.mathworks.de/de/help/matlab/tables.html
http://www.mathworks.de/de/help/mat.....ages-of-using-tables.html

Solltest du ein älteres Release als R2013b verwenden, gibt es entsprechend Dataset Arrays.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 08.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2014, 11:05     Titel:
  Antworten mit Zitat      
Dann habe ich dich falsch verstanden, sorry.

Weisst du vielleicht gerade wie ich das bei meinem Beispiel hinkriege, dass die Tabelle grösser ist und ich keine Scrollbars habe?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.06.2014, 15:47     Titel:
  Antworten mit Zitat      
Hallo,

ich kann mir höchstens vorstellen, dass man Position von Figure und uitable so weit vergrößert, dass es eben passt. Ggf. kann es auch helfen, die Schriftgröße kleiner zu machen.

Code:

f = figure('name','1/[(1+i)^n]','NumberTitle','off','Units', 'Normalized',...
    'Position',[0 0 1 1]);
rnames = [];
date = [];
for i = 1:30
   rnames = [rnames; {sprintf('interest %i%%',i)}]; %#ok<*AGROW>
   for j = 1:10
      if j == 1
            date = [date, 1 / ((1 + (i / 100))^j)];
      else
           date = [date, 1 / ((1 + (i / 100))^j)];
      end
   end
end
% date=[2 , 3 ; 4 ,7 ];
cnames = {'year 1','year 2','year 3','year 4','year 5','year 6','year 7','year 8','year 9','year 10'};
t = uitable('Data',reshape(date, 30, 10),'ColumnName',cnames,...
'RowName',rnames,...
'Parent',f,'Units', 'Normalized','Position',[0.05 0.05 0.9 0.9]);


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 08.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2014, 18:38     Titel:
  Antworten mit Zitat      
Vielen Dank, hat super geklappt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Helveticus
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 08.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2014, 21:32     Titel:
  Antworten mit Zitat      
Hmm es scheinen, dass die Felder der Tabelle falsch berechnet wurden, scheint als wären sie irgendwie transponiert. Ich muss mir das morgen noch einmal anschauen. Ich melde mich dann wieder.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

man muss ja an uitable eine Matrix übergeben. Ich habe einfach deinen Datenvektor in eine Matrix umgeformt, aber gescheiter wäre es sicher, von vorneherein eine Matrix anzulegen.

Code:
date = zeros(i,j);
for i = 1:30
   rnames = [rnames; {sprintf('interest %i%%',i)}]; %#ok<*AGROW>
   for j = 1:10
      if j == 1 % warum eigentlich die Fallunterscheidung??
            date(i,j) = 1 / ((1 + (i / 100))^j);
      else
           date(i,j) = 1 / ((1 + (i / 100))^j);
      end
   end
end


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 08.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2014, 18:39     Titel:
  Antworten mit Zitat      
Vielen Dank, jetzt scheint es korrekt zu sein.
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.