Benötige Hilfe für meine Abschlussarbeit!!! Indexierung???
RigoIce
Forum-Newbie
Beiträge: 3
Anmeldedatum: 09.01.14
Wohnort: ---
Version: ---
Verfasst am : 09.01.2014, 00:35
Titel : Benötige Hilfe für meine Abschlussarbeit!!! Indexierung???
Hallo,
ich benötige dringend Hilfe für meine Abschlussarbeit. Ich habe ein Programm mit zwei "for" Schleifen mit den Variablen i und j.
---------------------------------------------------------------------------------
Jetzt möchte ich alle Werte i und j in ein "Index" schreiben.
In etwa so:
Die +1 benötige ich damit ich keinen (
Attempted to access Werte50(1,0); index must be a positive integer or
logical) Fehler erhalte.
Danach sollen für die Werte aus der Schleife der Mittelwert/die Standardabweichung ect. berechnet werden.
Dieses habe ich so gelöst:
Nur erhalte ich für Werte50 und Werte10 nicht die Anzahl an Werten aus der Schleife (35X75).
Meine Ausgabe hat auch immer wieder 0er Einträge. Hier ein Auszug.
1 2 3 4 5 6 7 8 9 usw.
WERT WERT 0 0 0 0 0 WERT WERT
WERT WERT 0 0 0 0 0 WERT WERT
WERT WERT 0 0 0 0 0 WERT WERT
WERT WERT 0 0 0 0 0 WERT WERT
Die Werte10 & Werte50 haben eine Größe von 4*107 double.
Es werden einfach nicht alle Werte i und j aus der Schleife in die Werte10 und Wert50 geschrieben. Ich vermute das ich bei dem Teil mit dem Index Fehler mache. Wer kann mir helfen???
Wäre für jeden Tipp dankbar!
Beste Grüße
Alex
Harald
Forum-Meister
Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 09.01.2014, 09:58
Titel :
Hallo,
ich würde es anders angehen. Statt
würde ich verwenden
Das sollte es deutlich einfacher machen, den Index für Werte10 und Werte50 zu finden.
Übrigens: wenn M eine Matrix ist, dann kannst du statt
auch
schreiben, was schneller und eleganter ist.
Achtung:
und
sind nicht (!!) das gleiche. Wenn du die Standardabweichungen aller Elemente der Matrix haben willst, musst du das letztere nehmen!
Grüße,
Harald
RigoIce
Themenstarter
Forum-Newbie
Beiträge: 3
Anmeldedatum: 09.01.14
Wohnort: ---
Version: ---
Verfasst am : 09.01.2014, 12:40
Titel :
Hallo Harald,
danke für deine schnelle Antwort. Ich bekomme das mit der Indexierung leider nicht hin. Kannst du mir genau schreiben wie ich am Ende ein Array mit meinen 4 berechneten Werte für 10 & 50 für jeden Schleifendurchlauf (insgesamt 2625 Durchgänge) erhalte?
Ich habe den Code jetzt so aufgebaut:
Code:
% array aufbauen
steps = 5 ;
swL= 35 ;
swR= 75 ;
Werte50=zeros ( 4 ,swL*swR/steps^2 ) ;
Werte10=zeros ( 4 ,swR*swL/steps^2 ) ;
% das letzte
Lsteps= 0 :steps:swL;
Rsteps= 0 :steps:swR;
for i=1 :numel ( Lsteps)
for j=1 :numel ( Rsteps)
if ( drehrichtung == 1 )
if ( i<=swL)
Minksverschoben= circshift ( Mlinks,[ 0 i] ) ;
end
Mrechtsverschoben = circshift ( verschiebung,[ 0 j] ) ;
else
Mlinksverschoben = circshift ( Mlinks,[ 0 -j] ) ;
if ( i<=swR)
Mrechtsverschoben = circshift ( verschiebung,[ 0 -i] ) ;
end
end % if zu
% M addieren
MVerschAdd= ( ( Mlinksverschoben./r^2 ) +( Mechtsverschoben./r^2 ) ) ;
MVerschAddN= ( MVerschAdd.*r ^2 ) ;
% %M um berechnete Pixel verschieben
shiftM= circshift ( MVerschAddN,[ pixV pixH] ) ;
% %Verschobene Matrix mit vorher erstellten Matrix multiplizieren
kompM1New= shiftM.*MB ;
kompM2New= shiftM.*MB2 ;
% %MATRIX in Array umwandeln und alle Werte mit 0 herausschmeißen
kompM1New( : ) ;
kompM1Newohnenull=kompM1New( kompM1New~=0 ) ; [ b] % Korrekt mit ~=0?
kompM2New( : ) ;
kompM2Newohnenull=kompM2New( kompM2New~=0 ) ;[ b] % Korrekt mit ~=0?
% --------------------------------------------------------------------------
% index= round(((i/5+j/5*swL)/steps)+1)
n=numel ( Lsteps) ;
m=numel ( Rsteps) ;
index= round ( i/numel ( Lsteps) +i/numel ( Rsteps) ) +1 ;
--------------------------------------------------------------------------
Werte50( 1 ,index) =mean ( komplvk1Newohnenull) ;
Werte50( 2 ,index) =std ( komplvk1Newohnenull) ;
Werte50( 3 ,index) =sum ( komplvk1Newohnenull) ;
Werte50( 4 ,index) =max ( komplvk1Newohnenull) ;
%
Werte10( 1 ,index) =mean ( komplvk2Newohnenull) ;
Werte10( 2 ,index) =std ( komplvk2Newohnenull) ;
Werte10( 3 ,index) =sum ( komplvk2Newohnenull) ;
Werte10( 4 ,index) =max ( komplvk2Newohnenull) ;
% Werte50(1,index)=mean(komplvk1Newohnenull(: ));
% Werte50(2,index)=std(komplvk1Newohnenull(: ));
% Werte50(3,index)=sum(komplvk1Newohnenull(: ));
% Werte50(4,index)=max(komplvk1Newohnenull(: ));
% Werte10(1,index)=mean(komplvk2Newohnenull(: ));
% Werte10(2,index)=std(komplvk2Newohnenull(: ));
% Werte10(3,index)=sum(komplvk2Newohnenull(: ));
% Werte10(4,index)=max(komplvk2Newohnenull(: ));
Vielen Dank schonmal für deine Hilfe!!!!!
Gruß Alex
Harald
Forum-Meister
Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 09.01.2014, 18:15
Titel :
Hallo,
eine Möglichkeit:
und dann in der Schleife mit
etc. arbeiten. Danach kannst du das dann mit reshape in einer andere Form bringen.
zweite Möglichkeit:
index auf 1 initialisieren und am Ende der Iteration 1 addieren.
Grüße,
Harald
RigoIce
Themenstarter
Forum-Newbie
Beiträge: 3
Anmeldedatum: 09.01.14
Wohnort: ---
Version: ---
Verfasst am : 09.01.2014, 23:30
Titel :
Harald du bist der Beste!!!!
Vielen Danke!!!!!
Nach mehreren Stunden, läuft es jetzt so wie ich es mir vorgestellt habe.
Beste Grüße
Alex
Einstellungen und Berechtigungen
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
| 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.