Verfasst am: 27.01.2016, 22:06
Titel: Wert aus Spalte 1 Eingabe und Wert aus Spalte 2 als Variable
Hallo Liebe Community,
Ich habe ein Auswertungsskript geschrieben und versuche jetzt schon die ganze Zeit einen Wert zu erlangen.
Ich habe die Variable X die ich über Insert eingeben kann und mit dieser Eingabe würde ich gern auf den Wert der zweiten Spalte in der jeweiligen Zeile kommen, um mit diesem weiter zu rechnen.
Mein Problem ist, dass wenn ich einen Wert für X eingebe immer die Zeilennummer verwendet wird und nicht der Wert aus der gewünschten Spalte.
X und Y stellen zwei Zeitwerte dar.
A und B stellen Strom und Spannung dar. Hierbei soll die Sprungantwort berechnet werden.
In der jetzigen Programmierung wird aber die Zeilennummer und nicht der Wert aus Spalte 1 verwendet.
In der Matrix Ergebnis werden die Werte in Spalte 1 gesichert.
Danke für die schnelle Antwort
Bitte poste auch noch Beispieldaten für A und B, die deinem Format/Dimension entsprechen. Macht natrülich auch Sinn Strom und Spannung mit A und B zu bezeichnen, anstatt z.B. ihrer üblichen Formelzeichen U und I
Hier greifst du auf jeden Fall immer auf den i und i+1 Wert in der 2. Spalte von A und B zu.
Linke Spalte ist die Zeit, welche eingeben werden soll.
Rechte Spalte zeigt die Spannung (U) oder Strom (I), dieser Wert soll dann aus der gleichen Zeile wie die Zeit genommen werden.
Und was gibst du als Grenzwerte ein? X und Y müssen ja ganze Zahlen sein, da sie direkt den Schleifenzähler i initialisieren. Da ist X=0.1 schon mal schlecht.
Du merkst schon...je mehr man selbst ausführlich beschreibt, desto weniger Nachfragen
Vermutlich meinst du folgendes:
Eingabe Grenzwerte z.B. 0.2 und 1.1
Jetzt musst du für i den Index aus I zu den jeweiligen Grenzwerten suchen...
X = input('Geben sie den unteren Grenzwert ein: ');
Y = input('Geben sie den unteren Grenzwert ein: ');
% Finde Index der den Grenzwerten entspricht
StartIndex = find(I(:,1) == X);
EndIndex = find(I(:,1) == Y);
Ergebnis = zeros(EndIndex-StartIndex,1); % preallocate...wichtig bei Schleifen!
k = 1; % damit der 1. Ergebinswert auch wirklich an die erste Stelle im Vektor geschrieben wird for i = StartIndex:EndIndex
Ergebnis(k, 1) = (I(i, 2)-I(i+1, 2))/(U(i, 2)-U(i+1, 2));
k = k + 1; % nächster Speicherindex end
Eine weitere Frage wäre, welchen Skript ich eingeben muss um diesen Befehl gleichzeitig für mehrere Zellen verwenden zu können ohne ihn zu kopieren und neue Spannungsblöcke zuzuweisen. Also der Strom bleibt durchgehend gleich?
Das die Zeltnummer praktisch auch eine Variable bekommt.
dann würde ich die Berechung in eine
function
packen.
Code:
function Ergebnis = myfunction(I,U,limit1,limit2) % Finde Index der den Grenzwerten entspricht
StartIndex = find(I(:,2) == limit1);
EndIndex = find(I(:,2) == limit2);
Ergebnis = zeros(EndIndex-StartIndex,1); % preallocate...wichtig bei Schleifen!
k = 1; % damit der 1. Ergebinswert auch wirklich an die erste Stelle im Vektor geschrieben wird for i = StartIndex:EndIndex
Ergebnis(k, col) = (I(i, 2)-I(i+1, 2))/(U(i, 2)-U(i+1, 2));
k = k + 1; % nächster Speicherindex end end
Hier musst du dann eben eine weitere Schleife verwenden, welche die Eingangsvaribalen der Funktion entsprechend übergibt.
Gruß DSP
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
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.