|
|
einzelne Bits in Dateien bearbeiten |
|
Thomas_74 |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 06.02.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.01.2014, 09:41
Titel: einzelne Bits in Dateien bearbeiten
|
|
Hi,
ich möchte einzelne Bits in Dateien bearbeiten.
Dazu möchte ich eine Datei einlesen (was glaub ich auch funktioniert).
Allerdings gelinkt mir das zurückschreiben nicht. Ich habe es Probehalber mal ohne jegliche bearbeitung der Daten versucht.
Kann mir jemand bitte sagen wo ich meine Fehler eingebaut habe? Ich sollte doch eine Datei einlesen können die Bytes in Bits wandeln und das ganze dann auch wieder Rückwärts?
MfG Thomas
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 12.01.2014, 01:29
Titel: Re: einzelne Bits in Dateien bearbeiten
|
|
Hallo Thomas_74,
Wie wäre es, wenn Du die Daten direkt als UINT8 Vektor bearbeitest? Mit BITSET lässt sich das gut machen, oder? Statt des 43.ten Bits setzt Du halt das REM(43,8), also 3.te Bit des FLOOR(43/8) Bytes.
Zitat: |
Allerdings gelinkt mir das zurückschreiben nicht. |
Bitte erkläre immer, was genau nicht funktioniert. Es ist leichter ein Problem zu lösen, wenn man es nicht zuerst erraten muss.
Der Umweg über Strings ist bei DEC2BIN und BIN2DEC umständlich. Direkter geht es mit Zahlen-Arithmetik:
Gruß, Jan
|
|
|
Thomas_74 |
Themenstarter
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 06.02.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.01.2014, 13:42
Titel:
|
|
Hi,
hab es jetzt mit Öffnen:
und Schreiben:
gemacht.
Wenn es da aber was schnelleres gibt würde ich natürlich sofort umstellen.
Bei dem Code von Jan S
kam bei mir die Fehlermeldung:
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Error in ==> openbit2 at 6
ausg = rem(floor(pow2(-7:0).' * x), 2);
Error in ==> eaufruf1 at 27
Arch2=openbit2('Archiv.bin');
MfG Thomas
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 13.01.2014, 14:11
Titel:
|
|
Hallo
da hat Jan einen Tippfehler, sollte in der Zeile wohl so heißen:
|
|
|
Thomas_74 |
Themenstarter
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 06.02.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.01.2014, 15:11
Titel:
|
|
Hmm noch immer nicht so ganz.
Bei:
kommt jetzt:
Zitat: |
??? Error using ==> times
Matrix dimensions must agree.
Error in ==> openbit2 at 6
ausg = rem(floor(pow2(-7:0)' .* x), 2); |
MfG Thomas
|
|
|
Thomas_74 |
Themenstarter
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 06.02.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.01.2014, 13:54
Titel:
|
|
Hi,
mein MATLAB 2009a liefert bei
double Werte.
und
führt zu der Fehlermeldung:
Zitat: |
??? Error using ==> times
Matrix dimensions must agree. |
ist das ein Bug oder ein Programmierfehler?
MfG Thomas
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 16.01.2014, 01:45
Titel:
|
|
Hallo Thomas_74,
Vorschlag:
Es fehlte das Transponieren bei x. Ich kann mir nicht merken, of FREAD einen Zeilen- oder Spaltenvektor zurückliefert.
Gruß, Jan
|
|
|
Thomas_74 |
Themenstarter
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 06.02.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.01.2014, 14:42
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.
|
|