Bilder mit Achsenskalierung in Scilab generieren, was mache ich falsch?

Gast #5402862
Lesenswert?
• ▲
▼
Hallo,

Schon seit ein paar Stunden versuche ich Bilder mit festgelegter 
Achsenskalierung der X-Achse in Scilab zu generieren.

Dabei arbeitet mein programm an sich korrekt, bis die Datei mit dem 
Namen:
"C1Trend_100005_0" geladen wird.
Ab dieser Datei hängt die Grafikausgabe und Scilab stürzt ab.

Wenn im Folgenden Programm die 2 Zeilen:
            a=gca();
            a.data_bounds=[0.00,-zaehl;400,zaehl];
nicht vorhanden sind, funktioniert es, aber so bekomm ich die Achsen 
eben nicht skaliert...
1
anf='C'
2
kanal=1
3
dateiname='trend_'
4
zaehler=100000
5
mitte='_'
6
ende=0
7
FS=400
8
i=1
9
ds=1
10
//fft_points=length(FFTdat)
11
//bis 1048576 in 400mS
12
a=0
13
b=FS/1048577
14
c=FS-b
15
f=(a:b:c);
16
set(gda(),"font_size",4);// Setzt 
17
zaehl=0.01
18
nam='0_01'
19
labe=strcat(['AP015_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
20

21
    while zaehler<100084
22
        clf()
23
        disp('Neuer Durchgang')
24
        while i<7       //Erzeuge je eine FFT der ersten 4 Zeitabschnite
25
            test=strcat([anf,string(kanal),dateiname,string(zaehler),mitte,string(ende)])
26
            disp(test)
27
            dat=csvRead(test)
28
            subplot(3,2,i)
29
            plot(f,dat)
30

31
            title(labe,"font_size",4)
32
            xlabel("t/ms","font_size",4)
33
            ylabel("Amplitude/V","font_size",4)
34
            xgrid(100)
35
            a=gca();
36
            a.data_bounds=[0.00,-zaehl;400,zaehl];
37
            if kanal==1
38
                kanal=2
39
                labe=strcat(['CWT-03_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
40
            elseif kanal==2
41
                kanal=1
42
                zaehler=zaehler+1
43
                labe=strcat(['AP015_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
44
            end
45
            i=i+1
46
        end
47
        i=1
48
        disp('Bild machen1')
49
        bild=strcat(["DS",string(ds),mitte,string(ende),mitte,nam])
50
        disp('Bild machen2')
51
        xs2png (0, [bild]);  //SUPER!
52
        disp('Bild machen3')
53
        ds=ds+1
54
        disp('Bild gemacht')
55
    end

Wäre echt unheimlich toll wenn jemand da eine Idee hat :)
Ich kann einfach nicht verstehen, warum es gerade da auf einmal hängt...
Gast #5402992
Lesenswert?
• ▲
▼
Um die vorgegebene Achsenskalierung als minimale auszuwählen, so dass 
alle Abbildungen welche kleinere Werte enthalten mit dieser Skalierung 
generiert werden. Aber bei Abbildungen mit größerem Wertebereich auf 
Autoskalierung umgeschalten wird vertauscht man die Reihenfolge der 
Befehle.

Nachteil ist dass die Abbildung untern Rechts keine Skalierung der 
X-Achse bekommt...
1
    while zaehler<100084
2
        clf()
3
        disp('Neuer Durchgang')
4
        while i<7       //Erzeuge je eine FFT der ersten 4 Zeitabschnite
5
            test=strcat([anf,string(kanal),dateiname,string(zaehler),mitte,string(ende)])
6
            disp(test)
7
            dat=csvRead(test)
8
            subplot(3,2,i)
9
            
10
            
11
            title(labe,"font_size",4)
12
            xlabel("t/ms","font_size",4)
13
            ylabel("Amplitude/V","font_size",4)
14
            xgrid(100)
15
            lines(0)
16
            a=gca();
17
            //a.view="2d";
18
            a.data_bounds=[0.00,-zaehl;400,zaehl];
19
            plot(f,dat)
20
            if kanal==1
21
                kanal=2
22
                labe=strcat(['CWT-03_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
23
            elseif kanal==2
24
                kanal=1
25
                zaehler=zaehler+1
26
                labe=strcat(['AP015_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
27
            end
28
            i=i+1
29
        end
30
        i=1
31
        disp('Bild machen1')
32
        bild=strcat(["DS",string(ds),mitte,string(ende),mitte,nam])
33
        disp('Bild machen2')
34
        xs2png (0, [bild]);  //SUPER!
35
        disp('Bild machen3')
36
        ds=ds+1
37
        disp('Bild gemacht')
38
    end
Gast #5403019
Lesenswert?
• ▲
▼
Hier nun die Lösung. Es kommt entscheident darauf an, in welcher 
Reihenfolge man Beschriftet und skaliert.

--> Leider scheint nirgends genau dokumentiert zu sein, in welcher 
Reihenfolge man skalieren muss, damit Scilab nicht hängt...

Eine Funktionierende Varianten ist diese:
1
    while zaehler<100084
2
        clf()
3
        disp('Neuer Durchgang')
4
        while i<7       //Erzeuge je eine FFT der ersten 4 Zeitabschnite
5
            test=strcat([anf,string(kanal),dateiname,string(zaehler),mitte,string(ende)])
6
            disp(test)
7
            dat=csvRead(test)
8
            subplot(3,2,i)
9
            
10
            
11
            title(labe,"font_size",4)
12
            xlabel("t/ms","font_size",4)
13
            ylabel("Amplitude/V","font_size",4)
14
            xgrid(100)
15
            lines(0)
16
            a=gca();
17
            //a.view="2d";
18
            a.data_bounds=[0.00,-zaehl;400,zaehl];
19
            plot(f,dat)
20
            xlabel("t/ms","font_size",4)
21
            if kanal==1
22
                kanal=2
23
                labe=strcat(['CWT-03_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
24
            elseif kanal==2
25
                kanal=1
26
                zaehler=zaehler+1
27
                labe=strcat(['AP015_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
28
            end
29
            i=i+1
30
        end
31
        i=1
32
        disp('Bild machen1')
33
        bild=strcat(["DS",string(ds),mitte,string(ende),mitte,nam])
34
        disp('Bild machen2')
35
        xs2png (0, [bild]);  //SUPER!
36
        disp('Bild machen3')
37
        ds=ds+1
38
        disp('Bild gemacht')
39
    end

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.