Dienstag, 18. November 2008

LabVIEW: leeres Array an bestimmter Stelle beschreiben.

Was in LabVIEW nicht geht ist ein leeres Array an beispielsweise der fünften Stelle zu füllen. Matlab füllt dann den Rest mit Nullen, LabVIEW macht das nicht. Lässt sich lösen, muss man nur wissen. Wie? Gibts x Möglichkeiten für, ich suche aber noch die komfortabelste dafür. Wenn ich sie gefunden habe, zeige ich sie hier. Vorschläge sind gerne willkommen

Erinnerungshilfe.

Für mich zum merken: Hoch/Querformat-Einstellung im Firefox 3.0 befindet sich unter Datei>Seite einrichten

Auch zum merken: Tastaturkürzel bei OS X für Bildschirmfotos
  • ganzer Bildschirm: shift+apfel+3
  • ausgewählter Bereich: shift+apfel+4
  • ausgewähltes Fenster: shift+apfel+4 und dann keinen Rahmen ziehen sondern die Leertaste drücken

drückt man noch strg dazu geht das Foto nicht auf den Schreibtisch, sondern in die Zwischenablage.

Dienstag, 11. November 2008

Radiohead - House Of Cards

Ich erlaube mir aber durchaus auch mal Dinge zu schreiben/zu zeigen, die einen nicht unbedingt weiterbringen. Dafür aber nett anzuschauen sind oder sonst irgendwie interessant sind.
Deswegen mal das Musikvideo von Radioheads House of Cards:

Es wurde unteranderem mit einem LIDAR-System erstellt, vollkommen ohne Video-Kameras.
Ein Making-Of gibt es auch. Und wer so ein System kaufen will, wendet sich hier hin, ist doch eine nette Sache, wüsste ich eine Anwendung für ;)

Matlab Kurztipp: Figuregröße programmatisch festlegen

Möchte man die Größe einer Figure in Matlab festlegen, so lässt sich dies ganz einfach über den set-Befehl umsetzen. Am besten an einem kleinem Beispiel:
h = figure(1);
set(h,'Position',[200 200 640 480]);
Die Option Position ermöglicht es, festzulegen wo eine Figure auf dem Bildschirm dargestellt wird und wie groß sie sein soll. Die ersten beiden Werte im Vektor beinhalten die x- und y-Position der linken oberen Figure-Ecke, die beiden letzten geben die Breite und die Höhe der Figure an.
Jetzt ist dieser Befehl aber noch etwas schlauer:
h = figure(1);
set(h,'Units','normalized','Position',[0.2 0.2 0.5 0.5]);
Die Option Units lässt die Wahl zwischen:
  • normalized: relative Angaben
  • inches: Angaben in Zoll
  • centimeters: wer hätte es gedacht: in Centimetern
  • points: Angaben in Punkten (häufig für den Print-Bereich, siehe auch Wiki)
  • pixels: (standard) in Pixel
Damit erhält man eine ziemlich schöne Möglichkeit, Grafiken schon für den Export im Programm vorzubereiten ohne über den Export Setup... Menüpunkt zu arbeiten. Der set-Befehl hält hier nämlich auch alle anderen Optionen bereit, die man dort einstellen kann.

Wie lege ich zwei Bilder in Matlab transparent übereinander?

Da vor kurzem Bedarf bestand sowas zu bewerkstelligen, halte ich hier mal den Lösungweg dafür fest.
Zunächst einmal: Es gibt einen Befehl alpha(), damit kann man grundsätzlich alle Bilder/Patches oder sonstige flächigen Grafikteile einer Axis transparent machen. Das gilt aber wirklich für alle. Plote ich also zwei Bilder mit imagesc() oder image() übereinander:
bild = imread('test.png','png');
bild2 = imread('test2.png','png');
figure(1)
imagesc(bild)
hold on
imagesc(bild2)
hold off
alpha(0.5)
Das Ergebnis ist, dass man zwar beide Bilder übereinander liegen hat, aber halt beide zu 50 % durchsichtigt sind. Man möchte ja meistens lieber haben, dass das hintere Bild nicht durchsichtig ist. Dafür muss man nun Alphamaps verwenden.
Dabei handelt es sich um Matrizen, die genau so groß sind wie die zugehörigen Bilder. Sie enthalten werte zwischen 0 und 1, wobei 1 undurchsichtig ist (0 kann man sich denken).
Möchte ich jetzt beispielsweise, dass ein Bild 50 % durchsichtig ist, so erzeuge ich eine Matrix die nur 0.5 als Werte enthält. Ich schreibe jetzt einfach mal den Code und kommentiere Schlüsselstellen.
bild = imread('test.png','png');
bild2 = imread('test2.png','png');

figure(1)
imagesc(bild);

alpha_matrix = 0.5*ones(size(bild2,1),size(bild2,2)); %hier wird einfach nur eine %Matrix erzeigt die 0.5 als Werte hat
hold on
h = imagesc(bild2);
set(h,'AlphaData',alpha_matrix); % das ist der wichtigste Punkt, hier wird über den
%Set-Befehl die alpha_matrix mit dem Bild2 verbunden. h stellt den Handler (eine %Art Verweis) auf das geplottete Bild dar.
Mit diesem Code erhält man die gewünschte Darstellung. Der set-Befehl ist übrigens sehr, sehr mächtig. Viele Objekte in Matlab (z.B. Plots, Figures, Images, Optimierungsfunktionen(hier aber mit optimset)) lassen sich über einen Handler ansprechen und geben einem die Möglichkeit viele Dinge einzustellen. Mit set(h) als Eingabe in die Konsole erhält man alle verfügbaren Optionen, hier hilft natürlich die Hilfe.

Grundsätzlich sollte man noch beachten, dass jeder Plot (aber auch Line etc.) ein eigenes Objekt darstellt. Und das man diese auch in einer Figure gleichzeigt verwenden kann, so dass man beispielsweise Punkte in ein Bild ploten kann. Dabei aber immer an hold on denken ;)

Progrämmchen Teil 1

So erster Content, kurze Software-Empfehlungen.
  • yEd Graph Editor - ein ziemlich gutes Programm mit dem man schöne Strukturdiagramme (oder wie auch immer man sie nennen mag) gestalten kann. Besonders praktisch: man kann die Grafiken als svg exportieren und dann mit Inkscape beliebig bearbeiten. Freeware.
  • Inkscape - opensource Vektorgrafik-Programm. Ist schon ziemlich mächtig, ein paar Bugs hat es aber noch. Benutze ich für alle Grafiken, die nicht pixelbasiert sein müssen. Auch die eine Möglichkeit um Matlab eps-Grafiken zu überarbeiten.
Für den Einstieg ist das schonmal nicht schlecht... demnächst mehr.

(Re)launch

Mit den Takten von James Horners "All Systems Go - The Launch" aus dem Apollo 13 Soundtrack starte ich diese Neuauflage.

Das berühmte Stimmt ging vor einiger Zeit in das Nirwana des WWW... Immerhin 1,5 Jahre wurde Stimmt aktiv betrieben. Soviel aber dazu.
Die Neuauflage ist jetzt speziell, nicht mehr so "Ich erzähle irgendwas"-Art (weil auch ein wichtiger Punkt aus dem Stimmt-Universum nicht mehr existiert). Es soll primär um alles was mit Programmieren, Experimentieren, Forschen und Entwickeln zu tun hat gehen. Ganz besonders um Tipps und Tricks (ich kann "Tipps und Tricks" nicht ab aber wie soll man das sonst nenen?!) für LabVIEW und Matlab und Dinge über die ich sonst noch stolper.

So genug gelabert, das interessiert eh niemanden, es zählt nur Content.
We are go.