WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Workspaceexport wird größer als Original

 

T_Meister
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 85
Anmeldedatum: 14.12.11
Wohnort: BS
Version: 2013a&b, 2014a&b
     Beitrag Verfasst am: 22.01.2015, 16:06     Titel: Workspaceexport wird größer als Original
  Antworten mit Zitat      
Hallo zusammen,

ich habe eine Frage bzgl. der Exports von Vektoren aus dem Workspace. Wir haben ein Signal in Form eines Vektors (1x699611 double), filtern dieses und speichern es neu ab.
Gefiltert wird über die Funktion butter und filtfilt:
Code:
Function [a_TP] = TP_a(signal, f, fS)
n = 6;

ftype = 'low';

Wn = 2*f/fS;
[b,a] = butter(n,Wn, ftype);
a_TP = filtfilt(b,a,signal);
end

Im Anschluss führe ich den Filter aus:
Code:
[Signal_neu]=TP_a(signal, f, fS)
mit f=5 und fS=250

und speichere das neue Signal über den Workspace als .mat ab. Jetzt tritt folgendes Phänomen auf:
Das alte Signal war 1,3 MB groß und das neue ist nun über 5 MB groß. Länge der Vektoren ist gleich geblieben, es sind keine Signale dazugekommen und auch die Anzahl der Ziffern in jedem Feld des Vektors ist gleich geblieben. Ich verstehe nicht warum die Daten unnötig größer werden. Es wäre schön, wenn jemand Rat weiß.

Besten Dank
Thorsten
Private Nachricht senden Benutzer-Profile anzeigen


Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 22.01.2015, 16:31     Titel:
  Antworten mit Zitat      
Könntest du die beiden unterschiedlich großen MAT-Files zur Verfügung stellen?
_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
T_Meister
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 85
Anmeldedatum: 14.12.11
Wohnort: BS
Version: 2013a&b, 2014a&b
     Beitrag Verfasst am: 22.01.2015, 17:04     Titel: Dateien
  Antworten mit Zitat      
Anbei die Daten

Mats.zip
 Beschreibung:
Signale

Download
 Dateiname:  Mats.zip
 Dateigröße:  6.34 MB
 Heruntergeladen:  737 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 22.01.2015, 18:15     Titel:
  Antworten mit Zitat      
ich kann mir vorstellen das es daran liegt das in ypp nur 388 verschiedene werte enthalten sind wohingegen in ypp_filt_neu 699611 verschienen werte enhalten sind. 699611 double werte verbrauchen einen speicher von ca 5 mb. ich denke das bei der ersten die daten einfach nur komprimiert werden.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.01.2015, 23:15     Titel:
  Antworten mit Zitat      
Hallo,

der Vorstellung würde ich mich anschließen. Man kann ja leicht den Speicherbedarf berechnen:
Code:
699611*8 / 1024^2
ans =
    5.3376


Es braucht also nicht das gefilterte Signal mehr Speicher als nötig, sondern das Originalsignal weniger als man denken würde ;)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
T_Meister
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 85
Anmeldedatum: 14.12.11
Wohnort: BS
Version: 2013a&b, 2014a&b
     Beitrag Verfasst am: 23.01.2015, 08:40     Titel:
  Antworten mit Zitat      
Danke Harald für die Info,

aber vielleicht könnt ihr mir erklären, wie es möglich ist, dass das Originalsignal um Faktor 5 kleiner sein kann. Die Berechnung kann ich ja nachvollziehen. Gibt es einen Trick Vektoren zu komprimieren?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 23.01.2015, 09:26     Titel:
  Antworten mit Zitat      
die antwort habe ich bereits gegeben.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
T_Meister
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 85
Anmeldedatum: 14.12.11
Wohnort: BS
Version: 2013a&b, 2014a&b
     Beitrag Verfasst am: 23.01.2015, 09:32     Titel:
  Antworten mit Zitat      
Tut mir Leid, aber die Antwort verstehe ich nicht mit 388 Signalen. Für mich steht im Workspace bei beiden Vektoren die gleich Länge, wie kann da der eine nur 388 Werte haben. So wie ich das Verstehe, ist doch die Länge des Vektors entscheident für die Größe, egal ob da 699611 Mal der selbe Wert drin steht oder diese sich unterscheiden. Gibt es einen Befehl zum Komprimieren oder eine Möglichkeit auf die alte größe zurückzukommen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 23.01.2015, 10:17     Titel:
  Antworten mit Zitat      
Wenn du "unique" auf deine Signale anwendest, siehst du was Winkow meint.

Dein Ursprungssignal besteht aus 388 verschiedenen Werten mit unterschiedlicher Häufigkeit, so dass am Ende die knapp 700000 Elemente im Vektor zu finden sind.

Das gefilterte Signal hingegen liefert für so ziemlich jedes Element einen anderen Wert. Also quasi keine Kompressionsmöglichkeit.

Wenn du das gefilterte Signal auf die 3. Nachkommastelle rundest, landest du beim Abspeichern im 1,3-1,4 MB Bereich.
_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 23.01.2015, 12:53     Titel:
  Antworten mit Zitat      
Ich denke folgender Code hilft ganz gut zu verstehen wie das zusammenhängt:

Code:

n=100;

A=ones(n);
save('A_compressed', 'A')
save('A_uncompressed', 'A','-v6')

B=repmat([1:n],n,1);
save('B_compressed', 'B')
save('B_uncompressed', 'B','-v6')

C=rand(n);
save('C_compressed', 'C')
save('C_uncompressed', 'C','-v6')

whos
!dir *.mat

Name        Size             Bytes  Class     Attributes

  A         100x100            80000  double              
  B         100x100            80000  double              
  C         100x100            80000  double              
  n           1x1                  8  double              

23.01.2015  12:49               224 A_compressed.mat
23.01.2015  12:49            10.184 A_uncompressed.mat
23.01.2015  12:49               404 B_compressed.mat
23.01.2015  12:49            10.184 B_uncompressed.mat
23.01.2015  12:49            75.855 C_compressed.mat
23.01.2015  12:49            80.184 C_uncompressed.mat
 


In MATLAB sind alle Variable 100*100*8 Bytes gross. Wenn man sie speichert können sie komprimiert werden wenn der Kompressionsalgo Strukturen findet. Bei Zufallszahlen aber kaum.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.