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

for-Schleife bei Fehler weiterlaufen lassen

 

Torben
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 10.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2019, 04:08     Titel: for-Schleife bei Fehler weiterlaufen lassen
  Antworten mit Zitat      
Hey Leute,

Ich bin normalerweise jemand, der selbst so lange rumtüftelt bis es funzt, aber hier geht es um die Bachelor Thesis, daher ist Zeit rar...

Das Ziel ist folgendes:
Ich will eine Variable, dessen Werte in einer Matrix 495x1964 (Höhe x Zeit) so umwandeln, dass die Werte nicht mehr von der Höhe, sondern von einem anderen Höhenvektor abhängig sind. Dieser "Distanzvektor" ("DIST" - siehe im Code) ist von der Zeit abhängig. Den konnte ich auch erzeugen...
Jedoch, wenn ich die neue WerteMatrix erzeugen möchte, jetzt nicht mehr Höhe x Zeit, sondern DIST x Zeit, dann kommt ein Fehler, sobald er die zu findende Distanz nicht mehr in der Zeile findet und bricht den Rest der for-Schleife ab. Bekomme dann diese Fehlermeldung:

"Unable to perform assignment because the size of the left side
is 1-by-1 and the size of the right side is 0-by-1."

Meine Idee wäre nun hier mit einem if zu arbeiten, jedoch weiß ich nicht wie das gehen soll, da es ja hier nicht um die Werte geht, die nicht passen, sondern mit der Tatsache, dass er die Operation dann nicht durchführen kann...

Danke schonmal vorab, falls jemand helfen kann, oder eine Möglichkeit findet das ganze zu umgehen.

Code:


time = ncread(****);      % input time data
height = ncread(****);   % input height data
lwf_kg = ncread(*****);   % input lwf data
cloud_base_height = ncread*****);  %input cloud_base_height data

a(1:80,1) = round(height(1:80)-height(73));  % creates vector with one value only
f = find(cloud_base_height == -999);      % finds corrupted data
time(f) = [];              %shortens the time-vector to only not-corrupted data
cloud_base_height(f) = [];  %shortens the cbh-vector to only not-corrupted data
lwf_kg(:,f) = [];         % shortens the lwf-matrix to only not-corrupted data
lwf = 1000*lwf_kg;         %Scaling to g*m(^-2)*s^(-1)
t=length(time);
heightall = zeros(80,t);
for i=1:t
    heightall(1:80,i)=height(1:80,1);
end
%_________________________________________________________________________________

DIST(:,:) = round(heightall-cloud_base_height);  %creates DIST Matrix

l = zeros(80,1964);              %preallocates Matrix

%funktioniert zwar, müsste dann aber für jeden Datensatz einzeln abgeändert werden, da es nach einer gewissen Höhe abbricht. In diesem Fall eben bei a(61).
for j=1:1964
l(1,j) = find(DIST(:,j) == a(80));
l(2,j) = find(DIST(:,j) == a(79));
l(3,j) = find(DIST(:,j) == a(78));
l(4,j) = find(DIST(:,j) == a(77));
l(5,j) = find(DIST(:,j) == a(76));
l(6,j) = find(DIST(:,j) == a(75));
l(7,j) = find(DIST(:,j) == a(74));
l(8,j) = find(DIST(:,j) == a(73));
l(9,j) = find(DIST(:,j) == a(72));
l(10,j) = find(DIST(:,j) == a(71));
l(11,j) = find(DIST(:,j) == a(70));
l(12,j) = find(DIST(:,j) == a(69));
l(13,j) = find(DIST(:,j) == a(68));
l(14,j) = find(DIST(:,j) == a(67));
l(15,j) = find(DIST(:,j) == a(66));
l(16,j) = find(DIST(:,j) == a(65));
l(17,j) = find(DIST(:,j) == a(64));
l(18,j) = find(DIST(:,j) == a(63));
l(19,j) = find(DIST(:,j) == a(62));
%l(20,j) = find(DIST(:,j) == a(61));
%l(21,j) = find(DIST(:,j) == a(60));
%l(22,j) = find(DIST(:,j) == a(59));
%l(23,j) = find(DIST(:,j) == a(58));
%l(24,j) = find(DIST(:,j) == a(57));
%l(25,j) = find(DIST(:,j) == a(56));

end

lwfcbh = zeros(80,1964);  %preallocates Matrix

for k=1:1964
lwfcbh(1,k) = lwf(l(1,k),k);
lwfcbh(2,k) = lwf(l(2,k),k);
lwfcbh(3,k) = lwf(l(3,k),k);
lwfcbh(4,k) = lwf(l(4,k),k);
lwfcbh(5,k) = lwf(l(5,k),k);
lwfcbh(6,k) = lwf(l(6,k),k);
lwfcbh(7,k) = lwf(l(7,k),k);
lwfcbh(8,k) = lwf(l(8,k),k);
lwfcbh(9,k) = lwf(l(9,k),k);
lwfcbh(10,k) = lwf(l(10,k),k);
lwfcbh(11,k) = lwf(l(11,k),k);
lwfcbh(12,k) = lwf(l(12,k),k);
lwfcbh(13,k) = lwf(l(13,k),k);
lwfcbh(14,k) = lwf(l(14,k),k);
lwfcbh(15,k) = lwf(l(15,k),k);
lwfcbh(16,k) = lwf(l(16,k),k);
lwfcbh(17,k) = lwf(l(17,k),k);
lwfcbh(18,k) = lwf(l(18,k),k);
lwfcbh(19,k) = lwf(l(19,k),k);
lwfcbh(20,k) = lwf(l(20,k),k);
end



%Meine Idee, um das zu automatisieren, funktioniert nicht, weil er bei a(61) ankommend die iterationen nicht weiterführt.
for j=1:1964 i=1:80
g(i,j) = find(DIST(:,j) == a(81-i));
end


%for k=1:1964, i=1:80;
%lwfcbh2(i,k) = lwf(g(i,k),k);
%end
%lwfar(1,:) = lwf(l(1,:),:);

 
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

was den Titel angeht, würde ich "continue" oder try/catch vorschlagen. Allerdings verstehe ich nicht recht, wie der Beitrag an sich zum Titel passt.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.