|
ABel |
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 23.04.20
|
|
|
|
Wohnort: NRW
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.08.2023, 14:01
Titel: Ein paar Fragen
|
|
|
|
|
Hallo,
ich hab schon mit anderen Mathematikprogrammen gearbeitet und bin nun bei der Arbeit mit Octave über einige Punkte gestolpert.
1. Definition einer Variablen als int
>> i=int32(123)
>> Fs=192000
>> xx=(i-1)/Fs
xx = 0
weil nämlich
>> isinteger(xx)
ans = 1
Als Abhilfe habe ich nur die Verwendung von double() gefunden.
>> xx=double((i-1))/Fs
xx = 6.3542e-04
Gibt es andere, elegantere oder einfachere Methoden der Problemlösung?
2. Definition einer Variablen als Matrix
Ich benötige auch Matrizen, als Ergebnis von Berechnungen ergeben sich eigentlich Vektoren. Octave macht daraus aber Matrizen, (n,1) oder (1,n). Oft ist mir nicht klar warum bei der einen Rechnung eine (n,1)-Matrix und bei einer anderen eine (1,n)-Matrix herauskommt.
Bei weiteren Berechnungen sehe ich mich oft genötigt diese Matrizen mit (:,1) oder (1,: ) anzusprechen. Das erhöht nicht gerade die Lesbarkeit des Skriptes und ist Fehlerträchtig.
Viel schöner erscheint mir eine Lösung, die aus diesen Matrizen Vektoren macht.
Leider konnte ich mir bisher eine solche Lösung nicht ergooglen. Gibt es dazu eine Lösung?
3. Ermittlung der Größe einer Matrix
Dazu brauche ich bisher immer einen 2-Zeiler
Dummy=size(FFT);
Fmax=Dummy(1);
Für eine (n,1)-Matrix, oder eben
Fmax=Dummy(2);
Für eine (1,n)-Matrix.
Geht das auch in einer Zeile?
4. Ableitung mit Hilfe von diff()
Das Ergebnis von diff() erscheint mir doch sehr unbefriedigend. Soweit ich das sehe ermittelt diff() seine Ableitung nur über 2 Stützstellen.
Immerhin gibt es Differenzenquotient die über mehrere Stützstellen ermittelt werden. Gibt es für Octave Bibliotheken oder Toolboxen, die hier besseres bieten?
Wenn ich es schaffe, hänge ich hier Mal meine Funktion diffq() an.
5. fft()
Die Beschreibung der Funktion in der Dokumentation empfinde ich als unzulänglich?!
Was bekomme ich den von fft() in der ersten Zeile das Outputs? Für einen Frequenzgang darf ich erst in der 2ten Zeile anfangen. Meine Frequenzgangberechnung sieht nun so aus:
FFT=fft(Signal);
Dummy=size(FFT);
Fmax=Dummy(1);
Fend=(Fmax-1)/2;
FGang=sqrt(2)*FFT(2:Fend+1)/(Fmax-1);
Freq = Fs*(1:Fend)/(Fmax-1);
(Fs ist die Samplerate des Signals)
Geht das eleganter und besser lesbar?
Gruß Andreas
Beschreibung: |
|
Download |
Dateiname: |
diffq.m |
Dateigröße: |
806 Bytes |
Heruntergeladen: |
1532 mal |
|
|
|
|
|
Busmaster |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 05.08.09
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: Matlab2014, Matlab Online, Octave
|
|
|
|
|
|
Verfasst am: 01.09.2023, 11:13
Titel:
|
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|