mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bilder mit Achsenskalierung in Scilab generieren, was mache ich falsch?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
anf='C'
kanal=1
dateiname='trend_'
zaehler=100000
mitte='_'
ende=0
FS=400
i=1
ds=1
//fft_points=length(FFTdat)
//bis 1048576 in 400mS
a=0
b=FS/1048577
c=FS-b
f=(a:b:c);
set(gda(),"font_size",4);// Setzt 
zaehl=0.01
nam='0_01'
labe=strcat(['AP015_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])

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

            title(labe,"font_size",4)
            xlabel("t/ms","font_size",4)
            ylabel("Amplitude/V","font_size",4)
            xgrid(100)
            a=gca();
            a.data_bounds=[0.00,-zaehl;400,zaehl];
            if kanal==1
                kanal=2
                labe=strcat(['CWT-03_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
            elseif kanal==2
                kanal=1
                zaehler=zaehler+1
                labe=strcat(['AP015_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
            end
            i=i+1
        end
        i=1
        disp('Bild machen1')
        bild=strcat(["DS",string(ds),mitte,string(ende),mitte,nam])
        disp('Bild machen2')
        xs2png (0, [bild]);  //SUPER!
        disp('Bild machen3')
        ds=ds+1
        disp('Bild gemacht')
    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...

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe es grade mit einem anderen PC versucht, also daran scheint es nicht 
zu liegen.

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
    while zaehler<100084
        clf()
        disp('Neuer Durchgang')
        while i<7       //Erzeuge je eine FFT der ersten 4 Zeitabschnite
            test=strcat([anf,string(kanal),dateiname,string(zaehler),mitte,string(ende)])
            disp(test)
            dat=csvRead(test)
            subplot(3,2,i)
            
            
            title(labe,"font_size",4)
            xlabel("t/ms","font_size",4)
            ylabel("Amplitude/V","font_size",4)
            xgrid(100)
            lines(0)
            a=gca();
            //a.view="2d";
            a.data_bounds=[0.00,-zaehl;400,zaehl];
            plot(f,dat)
            if kanal==1
                kanal=2
                labe=strcat(['CWT-03_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
            elseif kanal==2
                kanal=1
                zaehler=zaehler+1
                labe=strcat(['AP015_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
            end
            i=i+1
        end
        i=1
        disp('Bild machen1')
        bild=strcat(["DS",string(ds),mitte,string(ende),mitte,nam])
        disp('Bild machen2')
        xs2png (0, [bild]);  //SUPER!
        disp('Bild machen3')
        ds=ds+1
        disp('Bild gemacht')
    end

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
    while zaehler<100084
        clf()
        disp('Neuer Durchgang')
        while i<7       //Erzeuge je eine FFT der ersten 4 Zeitabschnite
            test=strcat([anf,string(kanal),dateiname,string(zaehler),mitte,string(ende)])
            disp(test)
            dat=csvRead(test)
            subplot(3,2,i)
            
            
            title(labe,"font_size",4)
            xlabel("t/ms","font_size",4)
            ylabel("Amplitude/V","font_size",4)
            xgrid(100)
            lines(0)
            a=gca();
            //a.view="2d";
            a.data_bounds=[0.00,-zaehl;400,zaehl];
            plot(f,dat)
            xlabel("t/ms","font_size",4)
            if kanal==1
                kanal=2
                labe=strcat(['CWT-03_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
            elseif kanal==2
                kanal=1
                zaehler=zaehler+1
                labe=strcat(['AP015_C',string(kanal),dateiname,string(zaehler),mitte,string(ende)])
            end
            i=i+1
        end
        i=1
        disp('Bild machen1')
        bild=strcat(["DS",string(ds),mitte,string(ende),mitte,nam])
        disp('Bild machen2')
        xs2png (0, [bild]);  //SUPER!
        disp('Bild machen3')
        ds=ds+1
        disp('Bild gemacht')
    end

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.