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

if Abfrage in for Schleife

 

Phoenix
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2010, 21:10     Titel: if Abfrage in for Schleife
  Antworten mit Zitat      
Hallo Leute,

zuerst ich bin neu hier im forum hab schon einiges in der SuFu gefunden aber nunja das nicht vll hab ich auch nur falsch gesucht. Bin auch nicht der Ultra Matlab Pro Smile
Ich habe folgendes Problem:

Ich soll ein Programm in einer for schleife erstellen das die Masse einer Welle mit n Teilstücken berechnet alles gut und schön soweit nur ein Problem undzwar wenn man kein Durchmesser oder ne länge angegeben wird soll dort stehen das man einen eingeben soll und er springt dann wieder in die schleife

das hab ich bisher

Code:
clear all
clc
format short
n = input('Bitte geben Sie hier die Anzahl der Teilstücke ein: ');
clc
disp('Lassen Sie die Dicht frei und der Wert 7,85 wird angenommen!')
roh = input('Bitte geben Sie hier die Dichte des Materials ein [g/cm³]: ');
clc
if isempty(roh)
   roh=7.85;
end
i=1;
for i=1:n
   disp( [ num2str(k) '. Teilstück von ' num2str(n)] )
   d(i) = input('Bitte hier den Durchmesser angeben [cm]: ');
   if isempty(d(i))
      disp('Bitte geben Sie ....')
      return
   end
   l(i) = input('Bitte hier die Länge des Teilstückes [cm]: ');
   V(i)=((pi/4).*d(i)^2).*l(i);
   m(i)=V(i).*roh;
   M=sum(m);
end
disp(['Die Einzelmassen betragen in [g]: ',num2str(m),])
disp(['Die Gesamtmasse der Welle beträgt in [g]: ',num2str(M),])


folgender fehler:??? In an assignment A(I) = B, the number of elements in B and
I must be the same.

kann ich das i.wie anders machen oder was mach ich falsch.
danke schonmal für die hilfe
Private Nachricht senden Benutzer-Profile anzeigen


InspectorGadget
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 52
Anmeldedatum: 16.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2010, 23:52     Titel:
  Antworten mit Zitat      
Hi!!
Kann es sein, dass Du nicht den vollständigen Code reingestellt hast. Wenn ich ihn laufen lassen will, kennt er k nicht (Zeile nach der for-Schleife).
Und die angegebene Fehlermeldung hab ich im Code nicht gefunden. In welcher Zeile soll die denn auftreten? Da fehlt doch auch was, oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Phoenix
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2010, 00:05     Titel:
  Antworten mit Zitat      
oh sry seh gerade da in der einen zeile isn fehler

Code:
disp( [ num2str(i) '. Teilstück von ' num2str(n)] )


sry hatte ich bei mir schon berichtigt ^^

also i anstatt k

und sonst is das der ganze code


Error in ==> C:\MATLABR11\work\labor1a.m
On line 17 ==> d(i) = input('Bitte hier den Durchmesser angeben [cm]: ');
Private Nachricht senden Benutzer-Profile anzeigen
 
InspectorGadget
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 52
Anmeldedatum: 16.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2010, 00:13     Titel:
  Antworten mit Zitat      
Bei mir läuft das Programm fehlerfrei durch. Am Ende bekomm cih die Werte für die einzelnen Abschnitte und die Geammtmasse.
Anbei mal das m-file, mit dem ich gearbeitet hab.

Masse.m
 Beschreibung:

Download
 Dateiname:  Masse.m
 Dateigröße:  785 Bytes
 Heruntergeladen:  417 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Phoenix
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2010, 13:00     Titel:
  Antworten mit Zitat      
ja an sich läuft das programm auch sauber durch aber!

wenn man beim durchmesser oder der länge nichts eingibt kommt ein fehler und bricht das programm ab und genau das soll er nicht machen er soll dann dem anwender eine meldung raugeben und ihm wieder auffordern eine Maß größer 0 einzugeben das soll halt passieren wenn er 0 eingibt oder garnichts

hab da an einer if abfrage gedacht wie sie drinne ist aber nicht funktioniert

wollte das i.wie so haben

Code:

X=all(d) %sucht Nullen in einem Vektor und gibt dann true oder false aus
if isempty(d)|X==0
disp('Bitte geben Sie einen Wert ein')
return
end
Private Nachricht senden Benutzer-Profile anzeigen
 
InspectorGadget
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 52
Anmeldedatum: 16.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2010, 13:18     Titel:
  Antworten mit Zitat      
Code:
temp=0;
   while (temp==0)
       temp = input('Bitte hier den Durchmesser angeben [cm]: ');
       if isempty(temp)
           temp=0;
       end
   end
   d(i)=temp;

Das wäre eine Lösung. Geht vielleicht auch schöner.
Matlab hat ein Problem, einem Vektorelement empty zuzuweisen. Das geht nur mit eindim. Variablen. Deswegen musst Du den Umweg über temp gehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Phoenix
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2010, 13:24     Titel:
  Antworten mit Zitat      
ich danke dir funktioniert nun 1a Very Happy aber naja hätt ich auch allein drauf kommen können =) aber wozu gibs sune geilen foren ... bis demnächst Wink
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.