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

 

ilmiomondo
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2018, 14:06     Titel: For Schleife
  Antworten mit Zitat      
For Schleife......
Es gibt eine Matrix M mit 5 Spalten. Die Spalte 5 beschreibt die Zonen( Zahlen von 1-6). Diese Zonen sind in dieser Spalte durchmischt.

Code:
n = beschreibt die Zonen

M = xlsread('Daten.xlsx');

for n=1:m5
ind = M(:,5)==n;
Datensatz = M (ind,1:5);
    [Abw,stdAbw,mAbw]=Function(M,Datensatz);
end



Dazu lautende Funktion:
Code:
function [Abw,mAbw,stdAbw]=Function(M,Datensatz)
Abw = abs(Datensatz(:,3)-Datensatz(:,4)); % Berechnung der Abweichung
mAbw = mean(Abw(:,1)); % mittlere Abweichung
stdAbw = std (Abw(:,1));     % Standardabweichung
end


Möchte gerne für jede Zone meine Outputs. Bekomme jedes Mal für die höchste Zahl der Zone die Werte. Wie verhindere ich das überschreiben?
Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

du überschreibst die Daten jedes Mal. Abhilfe z.B. so:
Code:
[Abw(n),stdAbw(n),mAbw(n)]= ...


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2018, 07:36     Titel:
  Antworten mit Zitat      
Hallo, danke erstmal für deinen Tipp.
Leider funktioniert dieser nicht.
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.435
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.06.2018, 08:39     Titel:
  Antworten mit Zitat      
Hallo,

was funktioniert daran nicht?
Bekommst du eine Fehlermeldung? Welche?
Ein unerwartetes Verhalten? Inwiefern?`

Wenn du nicht reproduzierbaren Code zur Verfügung stellst, musst du schon ein wenig mehr Informationen liefern als "funktioniert nicht".

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2018, 09:06     Titel:
  Antworten mit Zitat      
Code:
M = xlsread('Daten.xlsx');
for n=1:m5
ind = M(:,5)==n;
Datensatz = M (ind,1:5);
    [Abw(n),stdAbw(n),mAbw(n)]=Function(Datensatz);
 E = cell(m5,4);
 end


mit eingelesener Funktion:
Code:
function [Abw,mAbw,stdAbw] = Function(Datensatz)
Abw = abs(Datensatz(:,3))-(Datensatz(:,4)); % Berechnung der Abweichung
mAbw = mean(Abw(:,1)); % mittlere Abweichung
stdAbw = std (Abw(:,1));     % Standardabweichung
end



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

Error in Scriptfertig (line 38 )
[Abw(n),stdAbw(n),mAbw(n)]=Function(Datensatz);
Private Nachricht senden Benutzer-Profile anzeigen
 
ilmiomondo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2018, 09:09     Titel:
  Antworten mit Zitat      
Code:
M = xlsread('Daten.xlsx');
for n=1:m5
ind = M(:,5)==n;
Datensatz = M (ind,1:5);
    [Abw(n),stdAbw(n),mAbw(n)]=Function(Datensatz);
 E = cell(m5,4);
 end


mit Funktion
Code:
function [Abw,mAbw,stdAbw] = Function(Datensatz)
Abw = abs(Datensatz(:,3))-(Datensatz(:,4)); % Berechnung der Abweichung
mAbw = mean(Abw(:,1)); % mittlere Abweichung
stdAbw = std (Abw(:,1));     % Standardabweichung
end


Code:
>> Scriptfertig
     4

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

Error in Scriptfertig (line 38)
    [Abw(n),stdAbw(n),mAbw(n)]=Function(Datensatz);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.435
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.06.2018, 10:20     Titel:
  Antworten mit Zitat      
Hallo,

was gibt denn deine Funktion zurück? Skalare Werte, Vektoren, Matrizen?
Im Zweifelsfall sollte es so gehen:
Code:
[Abw{n},stdAbw{n},mAbw{n}]= ...


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2018, 10:45     Titel:
  Antworten mit Zitat      
Die Funktion gibt für die Abweichung eine (x*1) Matrix, für die mittlere Abweichung eine Zahl und für std auch eine Zahl.

Code:
m5=max(Wertebereich_Daten(:,5));
disp(m5);
M = xlsread('Daten.xlsx');
for n=1:m5
ind = (M(:,5))==n;
Datensatz = (M (ind,1:5));
    [Abw(:,n),stdAbw(n),mAbw(n)]=Function(Datensatz);
end



Code:
function [Abw,mAbw,stdAbw] = Function(Datensatz)
Abw(n) = abs(Datensatz(:,3))-(Datensatz(:,4)); % Berechnung der Abweichung
mAbw(n) = mean(Abw(:,1)); % mittlere Abweichung
stdAbw(n) = std (Abw(:,1));     % Standardabweichung
end

Ich hab die Datei angehängt. ich möchte einfach für jede Zone ( Letzte Spalte) , meine Abweichung, mittlere Abweichung und Standardabweichung und die Endergebnisse z.b für Abweichungen am besten in einer Matrix und die zwei anderen einfach aufgelistet .aufgeteilt in Zonen.

Daten.txt
 Beschreibung:

Download
 Dateiname:  Daten.txt
 Dateigröße:  234 Bytes
 Heruntergeladen:  190 mal


Zuletzt bearbeitet von ilmiomondo am 04.06.2018, 12:04, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.435
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.06.2018, 10:59     Titel:
  Antworten mit Zitat      
Hallo,

und? Den neuen Vorschlag ausprobiert?

Gerade getestet: folgender Aufruf (!) funktioniert:
Code:
[Abw(:,n),stdAbw(n),mAbw(n)]=Function(Datensatz);


Bitte die Daten auch in dem Format anhängen, in dem du sie verwendest. So hat man Mehraufwand mit der Konvertierung und hat am Ende vielleicht was anderes als du.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2018, 12:03     Titel:
  Antworten mit Zitat      
Danke für deine Hilfe, aber es funktioniert immer noch nicht:-(

Edit: Stop es funktioniert!!!! Das Problem ist das die Datei die ich angehängt habe nur ein Ausschnitt war. Für eine größere Datei mit mehr Zeitaufnahmen und unregelmäßiger Anzahl von Zonen kommt der unten beschriebene Fehler:-( Wieso?

xlsx Datei kann man leider nicht hochladen.Einfach die Endung wieder ändern.


Edit: ich glaube es liegt nur an der Abweichung
[Abw(:,n),stdAbw(n),mAbw(n)]=Function(Datensatz);

Code:
m5=max(Wertebereich_Daten(:,5));
disp(m5);
M = xlsread('Daten.xlsx');
for n=1:m5
ind = (M(:,5))==n;
Datensatz = (M (ind,1:5));
    [Abw(:,n),stdAbw(n),mAbw(n)]=Function(Datensatz);

end
 


Funktion
Code:
function [Abw,mAbw,stdAbw] = Function(Datensatz)
Abw(n) = abs(Datensatz(:,3))-(Datensatz(:,4)); % Berechnung der Abweichung
mAbw(n) = mean(Abw(:,1)); % mittlere Abweichung
stdAbw(n) = std (Abw(:,1));     % Standardabweichung
end


Fehler:

Subscripted assignment dimension mismatch.

Error in Scriptfertig (line 40)
[Abw(:,n),stdAbw(n),mAbw(n)]=Function(Datensatz);


Am Ende hätte ich eine Auswertung als Tabelle wie folgt (siehe Anhang)

Daten.txt
 Beschreibung:

Download
 Dateiname:  Daten.txt
 Dateigröße:  7.96 KB
 Heruntergeladen:  182 mal
So soll es aussehen.txt
 Beschreibung:

Download
 Dateiname:  So soll es aussehen.txt
 Dateigröße:  272 Bytes
 Heruntergeladen:  200 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wenn die Vektoren unterschiedlicher Länge sind, sind wir wieder beim Vorschlag von 11:20. Um aus diesen Vektoren dann eine Matrix zu machen, müsstest du am Ende die zu kurzen Vektoren auffüllen, z.B. mit NaN.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2018, 16:10     Titel:
  Antworten mit Zitat      
Hallo Harald,
Code:
M = xlsread('Daten.xlsx');
for n=1:m5
ind = (M(:,5))==n;
Datensatz = (M (ind,1:5));
    [Abw{:,n},stdAbw(n),mAbw(n)]=Function(Datensatz);

end




wie kann ich die restlichen Zellen mit NaN füllen?
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

z.B. so:
Code:
len = max(cellfun(@length, Abw));
Abw = cell2mat(cellfun(@(x) [x; NaN(len-length(x), 1)], Abw, 'UniformOutput', false))

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2018, 06:39     Titel:
  Antworten mit Zitat      
Hallo Harald, wo müsste der von dir letzte Code zur Auffüllung eingefügt werden. Ich habe es probiert jedoch ohne Erfolg Sad
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
ilmiomondo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2018, 09:40     Titel:
  Antworten mit Zitat      
hat alles geklappt. Danke Harald


Grüße
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.