www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - plotten großer vektoren
plotten großer vektoren < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

plotten großer vektoren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:08 Di 31.07.2012
Autor: trbo

Aufgabe
aus einer Raumimpulsantwort die Klarheitswerte C50/C80 mittels matlab-programm errechnen

hallo,
mein problem dreht sich um das thema akustische messungen.
ich habe einen workspace mit abtastfrequenz und Impulsantwort. die impulsantwort besteht aus rund 250k messwerten, weßhalb octave mir den graph nicht plotten will. könnt ihr mir sagen ob das wirklich nicht geht oder ob ich anders rangehen muss?
so sieht die prompt aus (FS=sample freq. , TS=impulsantwort):
load 'IA.mat'
a=1/FS
x=0:a:0.08*FS     //x soll bis maximal 80ms gehen
y=TS(1:0.08*FS)
plot(x,y) //semilogx(x,y) hab ich auch schon versucht.

verzeiht mir synthaxfehler, es ist schon länger her dass ich mich mit matlab/octave intensiv beschäftigt hab. damals war ich aber sicher was die synthax angeht und es hat trotzdem nicht geklappt. es geht mir mehr um das prinzip. zu sagen wär noch dass ich das ganze auf der konsole ausführe, ohne graphische oberfläche.
danke für eure hilfe

        
Bezug
plotten großer vektoren: Antwort
Status: (Antwort) fertig Status 
Datum: 13:06 Di 31.07.2012
Autor: wieschoo


> aus einer Raumimpulsantwort die Klarheitswerte C50/C80
> mittels matlab-programm errechnen
>  hallo,
>  mein problem dreht sich um das thema akustische messungen.
> ich habe einen workspace mit abtastfrequenz und
> Impulsantwort. die impulsantwort besteht aus rund 250k
> messwerten,

Da sollte kein Problem darstellen. Da schmieren Matlab und Octave nocht nicht ab.

> weßhalb octave mir den graph nicht plotten
> will. könnt ihr mir sagen ob das wirklich nicht geht oder
> ob ich anders rangehen muss?
>  so sieht die prompt aus (FS=sample freq. ,
> TS=impulsantwort):
>  load 'IA.mat'
>  a=1/FS
>  x=0:a:0.08*FS     //x soll bis maximal 80ms gehen
>  y=TS(1:0.08*FS)

Wenn TS eine Funktion ist, dann müsste es funktionieren. "Geht nicht" ist eine sehr schlechte Fehlerbeschreibung.

>  plot(x,y) //semilogx(x,y) hab ich auch schon versucht.
>  
> verzeiht mir synthaxfehler, es ist schon länger her dass
> ich mich mit matlab/octave intensiv beschäftigt hab.

Falls TS eine Matrix von Messwerten ist, dann funktioniert die Zeile

> y=TS(1:0.08*FS)

nicht, da als Indizies nur Ganzzahlen auftauchen dürfen.
Angenommen du hast die 250k Messwerte (y-Werte) in TS stehen. Dann ist TS eine Matrix vom Format 1x250000 und der Befehl

plot(TS)

sollte genügen.



> damals war ich aber sicher was die synthax angeht und es
> hat trotzdem nicht geklappt. es geht mir mehr um das
> prinzip. zu sagen wär noch dass ich das ganze auf der
> konsole ausführe, ohne graphische oberfläche.
>  danke für eure hilfe


Schreib die genaue Fehlermeldung am besten auf. Sonst wird das nur eine Spielrunde "Blinde Kuh" für mögliche Antworten.

gruß
wieschoo

Bezug
                
Bezug
plotten großer vektoren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:36 Di 31.07.2012
Autor: trbo

mit der fehlermeldung hast du natürlich recht, sorry.
TS ist eine 1x1 matrix mit den 250k messwerten.
plot(TS) hat nicht funktioniert, fehlermeldung:

octave:17> plot(TS)
error: popen2: process creation failed -- Cannot allocate memory
error: called from:
error:   /usr/share/octave/3.2.4/m/plot/__gnuplot_open_stream__.m at line 28, co                   lumn 44
error:   /usr/share/octave/3.2.4/m/plot/gnuplot_drawnow.m at line 85, column 19

ich dachte erst daran dass der rechner grafiktechnisch nicht ausreichend konfiguriert ist um was zu plotten. aber als ich weiter rumprobiert hab, habe ich für kleinere definitionsbereiche einen graphen bekommen.
...
habe gerade nachdem ich den letzten teil geschrieben hab auf einem anderen Rechner (mit graphischer oberfläche) nochmal plot(TS) versucht, jetzt klappts natürlich -.-
ich hätte aber noch eine andere frage, und zwar ist es so, dass es bei einer raumimpulsantwort mehrere peaks gibt, dabei ist der erste peak der direktschall und alle weiteren sind reflexionen. ich brauche jetzt den zeitpunkt des direktschall-peaks. ich seh den zwar im graphen,kann aber nur abschätzen zu welchem zeitpunkt er genau auftritt. gibt es eine funktion bei matlab/octave, mit der ich in einem bestimmten intervall das maximum bestimmen könnte (bzw. den x-wert dazu)?





Bezug
                        
Bezug
plotten großer vektoren: Antwort
Status: (Antwort) fertig Status 
Datum: 15:16 Di 31.07.2012
Autor: Pille456

Hi!

In Matlab gibts die max/min Funktion, die auch problemlos auf Arrays funktioniert. Da die Octave Syntax ja an Matlab angelehnt ist, vermute ich, dass es dort eine ähnliche Funktion gibt. Für Matlab kannst Du hier schauen:
http://www.mathworks.de/help/techdoc/ref/max.html

Da Du den Zeitpunkt brauchst, vermute ich mal, dass Dir der max-wert nicht reichen wird, sondern Du ein Index o.Ä. brauchst. Dafür kannst Du max mit der find Funktion kombinieren (gibts auch bei Octave, aber bin mir nicht sicher, ob beide Funktionen in Matlab und Octave gleich funktionieren):

index = find(A==(max(A(:,1))) findet den höchsten Wert in der 1. Spalte der gesamten Matrix (alle Zeilen) (ungetestet!!)

Mit dem so gefunden Index kannst Du dann z.B. per A(index,2) zugreifen. Ich weiß jetzt nicht genau, wie Deine Matrizen aufgebaut sind - muss du etwas rumprobieren, bis du die richtigen Spalten /Zeilen gefunden hast.

Bezug
                                
Bezug
plotten großer vektoren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:27 Di 31.07.2012
Autor: trbo

ah ok danke, ich werd das mal versuchen.
eine frage noch, ist es irgendwie möglich über diese impulsantwort ein integral zu bilden (es ist ja keine kontinuierliche funktion..)? bis jetzt hab ich das sehr umständlich gelöst, indem ich, einfach ausgedrückt,  für jeden messwert eine rechteck berechne mit den seitenlängen TS und 1/FS , dann bilde ich aus der differenz zum nächsten messwert eine dreieckfläche und addier die zum rechteck. über eine schleife mache ich das so für jeden messwert. mir gefällt die lösung persönlich nicht so richtig, gibt es da vielleicht eine elegantere methode?

Bezug
                                        
Bezug
plotten großer vektoren: Antwort
Status: (Antwort) fertig Status 
Datum: 16:11 Di 31.07.2012
Autor: Pille456

Hio,

nach ein wenig "googlen" habe ich für Matlab diese beiden Funktionen gefunden:
trapz: http://www.mathworks.de/help/techdoc/ref/trapz.html
cumtrapz: http://www.mathworks.de/help/techdoc/ref/cumtrapz.html

Ich habe bisher nichts mit diesen Funktionen gemacht (sind mir auch neu), aber laut Doku sieht die "trapz" Funktion genau nach dem aus, was Du bereits implementiert hast.

Bezug
                                                
Bezug
plotten großer vektoren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 16:54 Di 31.07.2012
Autor: trbo

ich hab dazu natürlich auch schon gegoogelt und so, aber bin dabei leider auf keine adäquate Lösung gestoßen. also danke für den tip, ich probier damit schon ein bisschen rum und werd später berichten ob es klappt.
erstmal danke für eure hilfe!

Bezug
                                
Bezug
plotten großer vektoren: Ergänzung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:10 Di 31.07.2012
Autor: wieschoo

Der Max-befehl liefert sowohl das Maximum als auch den Index.

[a,b] = max(...)

Bezug
                                        
Bezug
plotten großer vektoren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:36 Di 31.07.2012
Autor: Pille456

Ahh wusste ich noch gar nicht, Danke für den Tipp!  
Hab das immer mit find gelöst.. :D

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]