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

Probleme bei einer If-Abfrage

 

fritzschöller
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 07.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2014, 10:32     Titel: Probleme bei einer If-Abfrage
  Antworten mit Zitat      
Servus,
ich hab ein eher triviales Problem, komme aber nicht auf die Lösung. Es soll zur Umrechnung von RGB-FarbWerten in XYZ-Werten eine if-else-Abfrage durchlaufen werden. Leider wird die if-Schleife immer übersprungen auch wenn die Bedingung erfüllt ist. Matlab springt fragt hier immer sofort die das Argument unter else ab.

Liegt es an der Form der Matrize? Habe diese auch schon in unendliche viele Formen gebracht

Hier mal ein Ausschnitt....

Code:

img=imread('6000N.tif'); % einlesen
img=double(img)+1; % umwandeln in double
R=img(:,:,1); % auslesen r-kanal
G=img(:,:,2); % auslesen g-kanal
B=img(:,:,3); % auslesen b-kanal

var_R=(R(1:100,: )/255); % Format 100x2048, alle < 1
var_G=(G(1:100,: )/255); % Leerzeichen-->sonst wir ein Smilie draus.
var_B=(B(1:100,: )/255);

if  var_R >= 0.04045
    var_R = ((var_R + 0.055)/1.055).^2.4;    % Habe hier auch schonmal eine neue Variable mit vordefinierter Größe (100x2048) schreiben lassen var_R1, auch kein Erfolg
else
    var_R = var_R / 12.92;
end
 


Eigentlich keine schwere Abfrage...
Kann eine Einstellung in Matlab dazu führen?

Danke für die Antworten.

und ja ich hab die Suche verwendet, und da steht halt nur immer:

If Abfrage

If [Bedingung]
Argument
else
Argument
end
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 07.03.2014, 11:28     Titel:
  Antworten mit Zitat      
Hallo,

deine Variable var_R ist ja eine ganze Matrix mit 100 Zeilen und einer gewissen Anzahl an Spalten. Schau dir mal an, was if macht, wenn eine ganze Matrix "wahr" sein muss, bzw wenn dann einige Elemte nicht wahr sind.

So wie ich das sehe, kann man dein Problem einfach durch logical indexing lösen. Probier mal:
Code:
idx1 = var_R >= 0.04045;
idx2 = var_R < 0.04045;

var_R(idx1) = ((var_R(idx1)+ 0.055)/1.055).^2.4;
var_R(idx2) = var_R(idx2)/12.92;
 

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
fritzschöller
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 07.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2014, 12:02     Titel:
  Antworten mit Zitat      
Danke für die schnelle Hilfe!

Funktioniert einwandfrei.
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 - 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.