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

Schleife für shiftleft Operation

 

Loecha

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2009, 02:49     Titel: Schleife für shiftleft Operation
  Antworten mit Zitat      
hi, ich bin noch ein newbie in diesem Gebiet und bin jetzt am verzweifeln

mein code

for x=1:250
if(Bild(x,1)==1);
while Bild(x,1)==0;
BW=bitshift(x,1)
end
end
end

zwar meldet er keine fehler, doch machen tut er auch nichts, ich weiß jetzt auch nicht warum.

das programm soll einfach bei den Zeilenweise nach der Spalte schauen und wenn dort eine 1 ist soll er 1 nach links shifte bis eine 0 kommt.

leider funktioniert es nicht


kann mir da jemand helfen oder gibt es schon einen funktion dafür?


dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2009, 12:46     Titel:
  Antworten mit Zitat      
Hallo,

da gibt es einige Fehler im Codeschnipsel. Wenn ich das richtig verstanden habe, schaust du in jeder Zeile das erste Element an. Wenn dies eine 1 ist, dann willst du in das erste Element die Zahl reinschreiben, die sich durch das bitweise Shiften ergibt, wobei um so viele Stellen geshiftet wird, wie sich 1er hintereinander in dieser Zeile befinden.

1) Die while Anweisung ist falsch. Die wird nie ausgeführt. Falls deine if-Bedingung zutrifft " Bild(x,1) == 1 ", kann die while Bedingung " Bild(x,1) == 0 " nie zutreffen.
2) Du schreibst eine Zahl nach BW. Diese Zahl wird immer 2*x betragen.

Kannst du vielleicht nochmals genau definieren was dein Code machen sollte?

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Loecha
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2009, 13:53     Titel: Schleife für shiftleft Operation
  Antworten mit Zitat      
ok, ich erkläre es genauer, was ich eigentlich erreichen wollte bildlich dargestellt

1111111111101010
1111111111011010
1111111111110111
1111111111101001
1111111111011101
.....
...

das ist mein bild, natürlich geht es noch viel weiter und breiter. ich habe hier mal abgekürzt.

ich wollte jetzt draus

01010...........
011010.........
0111....
01001...
011101..
...
..

ich bekomme das shiften einfach nicht hin. sitze schon 5 studen dran.

mit dem befehl bitsll(a,k) klappt es auch nicht wie gewünscht
funktioniert irgendwie nicht

ich hoffe du kannst mir weiter helfen, bin schon am verzweifeln
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.01.2009, 19:23     Titel:
  Antworten mit Zitat      
Hallo Loecha,
bitshift verkleinert oder vergrößert diskrete Werte.
Wenn du innerhalb der Matrix die Positionen verändern möchtest, dann passt bitshift nicht.

Versteh ich richtig, dass du so was erreichen möchtest, wie in Code-Beispiel?
Code:

Bild=[1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0;...
         1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0;...
         1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1;...
         1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1;...
         1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1]
BW=zeros(size(Bild))
[row,col]=find(Bild==0,size(Bild,1),'first');
for i=1:length(b)
   BW(row(i),1:end-col(i)+1)=Bild(row(i),col(i):end);
end
BW

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2009, 17:48     Titel:
  Antworten mit Zitat      
length(b) die variable b ist nicht angegeben soll das die breite des bildes oder eine neue variable
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 31.01.2009, 01:45     Titel:
  Antworten mit Zitat      
Hallo,

tut mir leid, hab copy paste Fehler gemacht
sollte eigentlich so heißen:
Code:

Bild=[1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0;...
         1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0;...
         1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1;...
         1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1;...
         1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1]
BW=zeros(size(Bild))
[row,col]=find(Bild==0,size(Bild,1),'first');
for i=1:length(col)
   BW(row(i),1:end-col(i)+1)=Bild(row(i),col(i):end);
end
BW
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Loecha
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2009, 23:46     Titel: shiften nach links funktioniert noch immer nicht
  Antworten mit Zitat      
das funktioniert nicht so ganz wie ich es mir erhofft habe, anstatt die zeile mit den 1111111111110001001 auf 0001001 nach links zu shiften, passiert
000000000000000000 das das er dort wo eine 1 am anfange der spalte ist er die ganze zeile mit nullern fühlt und somit die hälfte des bildes schwarz wird.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.02.2009, 20:47     Titel:
  Antworten mit Zitat      
Hallo, das verstehe ehrlich gesagt nicht? Willst du, dass das Bild abgeschnitten wird?
Private Nachricht senden Benutzer-Profile anzeigen
 
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.