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

Spaltenabhaengige Zufallszahlen in Einer Matrix

 

Roland
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 04.03.09
Wohnort: ---
Version: 7.6.0
     Beitrag Verfasst am: 08.04.2009, 11:38     Titel: Spaltenabhaengige Zufallszahlen in Einer Matrix
  Antworten mit Zitat      
Hallo miteinander,
ich hoffe es kann mir einer helfen. Ich versuche in einer vorgegebenen Matrix zufallsgeneriert), zeilen und spaltenweise neue Werte (auch zufallsgeneriert) einzugeben. Der neue Wert soll dabei abhaengig von der spaltenzahl berechnet werden. Nur klappen will das nicht so recht Sad .
Danke.
Code:

clear all;                           % Clearing the current workspace
rand('twister',sum(100*clock))       % Initialise Random Number Generator
npar=26;
mutrate=0.2;
Nt = npar;
popsize = 8;
nmut=ceil((popsize-1)*Nt*mutrate);
mrow=sort(ceil(rand(1,nmut)*(popsize-1))+1)
mcol=ceil(rand(1,nmut)*Nt)
for i = 1:1: popsize
r_LE =10*rand + 1;
r_TE = 4*rand + 1;
alpha = -180*rand;
beta = 90*rand;  
gamma = 90*rand;
epsilon = -180*rand;  
s = rand (1,10);
p = rand (1,10);
chr = [r_LE alpha beta s p r_TE gamma epsilon];
   
par(i,:) = chr;
end
par


for ii = 1:nmut
    if mcol(ii) == 1 %r_LE
        par(mrow(ii),mcol(ii)) = 10*rand + 1;
        elseif  mcol(ii) == 2 %alpha & epsilon
        par(mrow(ii),mcol(ii)) = (-1)*135*rand;
        elseif mcol(ii) == 3 | mcol(ii) == 25; %beta & gamma
        par(mrow(ii),mcol(ii)) = 90*rand ;
        elseif 4<= mcol(ii) < 13 %s
        par(mrow(ii),mcol(ii)) = rand*s(1,ceil(rand*length(s)));
        elseif 13<= mcol(ii) <24 %p
        par(mrow(ii),mcol(ii)) = rand*p(1,ceil(rand*length(p)));
        elseif  mcol(ii) == 24 %r_TE
        par(mrow(ii),mcol(ii)) = 4*rand + 1;
        elseif  mcol(ii) == 26
        par(mrow(ii),mcol(ii)) = (-1)*180*rand;
    end
end
par
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 08.04.2009, 12:45     Titel:
  Antworten mit Zitat      
Hallo Roland,

der Fehler liegt in dieser Zeile

Code:
elseif 4<= mcol(ii) < 13


Für einen Wahrheitswert können nicht zwei Abfragen gleichzeitig gemacht werden. Es wird jetzt erst (4<= mcol(ii)) ausgewertet; und egal, ob es wahr oder falsch ist, ist der Vergleich (0 < 13) oder (1 < 13) immer wahr.
Richtig wäre:

Code:
elseif 4<= mcol(ii) && mcol(ii) < 13


Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Roland
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 04.03.09
Wohnort: ---
Version: 7.6.0
     Beitrag Verfasst am: 08.04.2009, 13:03     Titel:
  Antworten mit Zitat      
Hallo Bijick,
funktioniert! Danke!
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.