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

Vektor in einer Schleife

 

Fred90
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 17.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2012, 11:17     Titel: Vektor in einer Schleife
  Antworten mit Zitat      
Hallo,

ich habe schon wieder eine Frage Wink

und zwar wie ist es möglich einen Vektor in einen loop einzubauen?

Ich habe z.B eine Matrix und über dies Matrix geht mein loop drüber und setzt die Werte der matrix zu 1 bzw 0, wenn sie dem vorher definierten wert entsprechen bzw nicht entsprechen.
mit einem vorher definierten festen wert klappt alles wunderbar, doch wenn ich für diesen wert einen vektor einsetze, so dass ich am ende mehrere binäre matrizen bekomme, die jeweils einen anderen schwellwert besitzen funktioniert es nicht!

Vielen Dank schon mal für eure hilfreichen Tipps!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.01.2012, 11:21     Titel:
  Antworten mit Zitat      
Hallo,

poste doch bitte einen Codeausschnitt und erkläre genau, was passieren soll und was passiert.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 17.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2012, 11:30     Titel:
  Antworten mit Zitat      
Ok,
also hier ist es so wie es funktioniert:

th= 0.5

for r= 1:size(imgSseg_sd,1);
for c = 1:size(imgSseg_sd,2);
if (imgSseg_sd(r,c) < th);
imgSseg_sd(r,c)= 0;
elseif (imgSseg_sd(r,c) >=th);
imgSseg_sd(r,c)= 1;
end
end

Doch nun würde ich gerne th durch einen vektor ersetzen, doch dann kommt immer die Fehlermeldung, dass th ein nonscalares produkt ist!

Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.01.2012, 11:46     Titel:
  Antworten mit Zitat      
Hallo,

das momentane kannst du umsetzen mit
Code:
imgSseg_sd = imgSseg_sd > th;


Ich sehe nicht, wo die Fehlermeldung herkommen soll, da keine Multiplikation durchgeführt wird. Bitte Fehlermeldung nicht übersetzen, sondern kopieren.

Was möchtest du denn machen? Möchtest du für die einzelnen Zeilen einen unterschiedlichen Threshold angeben oder für die Spalten?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 17.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2012, 11:59     Titel:
  Antworten mit Zitat      
Hallo,

momentan hab ich es so umgesetzt und es funktioniert auch so mit einem skalar produkt.

Code:

th= 0.5;
imgSseg_sd(imgSseg_sd<th)=0;
imgSseg_sd(imgSseg_sd>=th)=1;
 


doch so

Code:

th= [0:0.1:1]
imgSseg_sd(imgSseg_sd<th)=0;
imgSseg_sd(imgSseg_sd>=th)=1;
 


kommt diese Fehlermeldung:

Zitat:

??? Error using ==> lt
Matrix dimensions must agree.

Error in ==> testROC at 44
imgSseg_sd(imgSseg_sd<th)=0;


Ich möchte am Schluss verschiedene Matrizen mit unterschiedlichen Thresholds haben.

Danke!
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: 21.01.2012, 12:06     Titel:
  Antworten mit Zitat      
einen vektor mit nem anderen zu vergleichen der auch noch ne andere länge hat geht nicht.. was soll da überhaubt rauskommen
Private Nachricht senden Benutzer-Profile anzeigen
 
Fred90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 17.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2012, 12:11     Titel:
  Antworten mit Zitat      
eben, deshalb hab ich es auch mit loops versucht!

wie schon gesagt binäre matrizen mit jeweils einem andern threshold
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

damit man dir helfen kann müsstest du diese Frage beantworten:


Zitat:
Was möchtest du denn machen? Möchtest du für die einzelnen Zeilen einen unterschiedlichen Threshold angeben oder für die Spalten?

... oder für Blöcke? Vielleicht hilft auch ein kleines Beispiel, an dem man sieht, welche Resultate du haben willst.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 17.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2012, 12:46     Titel:
  Antworten mit Zitat      
sorry, dass ich es nicht so präzise beschreiben kann jetzt versuch ich es mal mit einem Beispiel Smile

also:

M=
[ 22 18 7;
4 16 2;
25 3 23]

jetzt will ich z.B mehrere thresholds anwenden, für das Bsp mal nur 2.

für th=15;

M=
[1 1 0;
0 1 0;
1 0 1]

für th= 20

M= [1 0 0;
0 0 0;
1 0 1]

ich kann das Problem zwar lösen, indem ich immer verschiedene loops anwenden, aber ich würde es gerne alles in einen verpacken, so dass er mir für verschiedene thresholds unterschiedliche Matrizen auswirft.

Ich hoffe mit dem Beispiel ist auch die Frage zu den Zeilen und Spalten beantwortet....also die thresholds sollen auf die gesamte matrix angewandt werden.

Vielen DAnk für die Bemühungen!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.01.2012, 12:52     Titel:
  Antworten mit Zitat      
Hallo,

z.B. so:

Code:
N = zeros([size(M) length(th)]);
for I = 1:length(th)
N(:,:,I) = M > th(I);
end


Grüße,
Harald

Zuletzt bearbeitet von Harald am 21.01.2012, 13:18, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Fred90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 17.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2012, 13:15     Titel:
  Antworten mit Zitat      
mhm...bei mir kommt der Error

Zitat:

??? Error using ==> gt
Matrix dimensions must agree.

Error in ==> mehrThres at 8
N(:,:,I) = M > th;



und für
N kommen nur Matrizen mit lauter Nullern raus??

Aber sonst siehts eigentlich ganz gut aus
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.01.2012, 13:19     Titel:
  Antworten mit Zitat      
Hallo,

kleine Änderung imCode, s.o. [ (I) eingefügt ]. Jetzt müsste es passen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 17.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2012, 13:24     Titel:
  Antworten mit Zitat      
SUPER!!! es klappt Wink

Vielen Dank!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Fred90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 17.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2012, 16:25     Titel:
  Antworten mit Zitat      
leider funktioniert es doch leider nicht so Crying or Very sad


denn bei einem th= 7 kommt das raus:

N =

1 1 1
0 1 0
1 0 1

aber raus kommen müsst das

N=

0 0 1
0 1 0
1 0 1

woran kann das liegen?

Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.01.2012, 16:31     Titel:
  Antworten mit Zitat      
Hallo,

ist das bezogen auf obiges M? Wenn nicht, bitte die Daten zur Verfügung stellen.

Links oben in diesem M stehen doch Einträge > 7, warum soll da dann keine 1 stehen? Rechts oben kommt bei mir weder eine 1 raus noch würde ich eine erwarten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 2025 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.