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

Wert aus Spalte 1 Eingabe und Wert aus Spalte 2 als Variable

 

Janik94
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2016, 22:06     Titel: Wert aus Spalte 1 Eingabe und Wert aus Spalte 2 als Variable
  Antworten mit Zitat      
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.

Ich hoffe Ihr könnt mir helfen

Mit freundlichen Grüßen

Janik94
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 27.01.2016, 22:27     Titel:
  Antworten mit Zitat      
Hallo,

bitte poste doch mal deinen Code. Dann ist die Hilfe deutlich einfacher!

Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen
 
Janik94
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2016, 22:42     Titel:
  Antworten mit Zitat      
Hallo DSP


Code:
X = input('Geben sie den unteren Grenzwert ein: ')
Y = input('Geben sie den unteren Grenzwert ein: ')

for i = X:Y
Ergebnis(i, 1)=(A(i, 2)-A(i+1, 2))/(B(i, 2)-B(i+1, 2))
end


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

Mit freundlichen Grüßen
Janik94
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 27.01.2016, 22:49     Titel:
  Antworten mit Zitat      
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 Wink

Hier greifst du auf jeden Fall immer auf den i und i+1 Wert in der 2. Spalte von A und B zu.

Code:

(A(i, 2)-A(i+1, 2))/(B(i, 2)-B(i+1, 2))

% Syntax:
A(Zeile : Spalte)
 


Zuletzt bearbeitet von DSP am 27.01.2016, 23:07, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Janik94
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2016, 23:06     Titel:
  Antworten mit Zitat      
Code:


I = [0.1,10; 0.2,11; 0.3,15; 0.4,17; 0.5,12; 0.6,22; 0.7,35; 0.8,21; 0.9,7; 1.0,10; 1.1;1; 1.2,19; 1.3,34; 1.4;15; 1.5,17]

U = [0.1,200; 0.2,210; 0.3,230; 0.4,250; 0.5,235; 0.6,240; 0.7,211; 0.8,214; 0.9,265; 1.0,237; 1.1;298; 1.2,270; 1.3,278; 1.4;276; 1.5,274]

X = input('Geben sie den unteren Grenzwert ein: ')
Y = input('Geben sie den unteren Grenzwert ein: ')

for i = X:Y
Ergebnis(i, 1)=(I(i, 2)-I(i+1, 2))/(U(i, 2)-U(i+1, 2))
end


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 27.01.2016, 23:10     Titel:
  Antworten mit Zitat      
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 Wink

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...

Code:

I = [0.1,10; 0.2,11; 0.3,15; 0.4,17; 0.5,12; 0.6,22; 0.7,35; 0.8,21; 0.9,7; 1.0,10; 1.1,1; 1.2,19; 1.3,34; 1.4,15; 1.5,17];

U = [0.1,200; 0.2,210; 0.3,230; 0.4,250; 0.5,235; 0.6,240; 0.7,211; 0.8,214; 0.9,265; 1.0,237; 1.1,298; 1.2,270; 1.3,278; 1.4,276; 1.5,274];

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
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Janik94
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2016, 01:44     Titel:
  Antworten mit Zitat      
Vielen Lieben Dank. Das hat einwandfrei geklappt.

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.


Mit freundlichen Grüßen
Janik94
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 28.01.2016, 21:53     Titel:
  Antworten mit Zitat      
Hallo,

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
 


Diesen Teil speicherst du in einen separaten m-file unter dem Namen der Funktion (hier als Bsp. myfunction.m)

In einem anderen m-file nutzt du die Funktion:

Code:

I = [0.1,10; 0.2,11; 0.3,15; 0.4,17; 0.5,12; 0.6,22; 0.7,35; 0.8,21; 0.9,7; 1.0,10; 1.1,1; 1.2,19; 1.3,34; 1.4,15; 1.5,17];

U = [0.1,200; 0.2,210; 0.3,230; 0.4,250; 0.5,235; 0.6,240; 0.7,211; 0.8,214; 0.9,265; 1.0,237; 1.1,298; 1.2,270; 1.3,278; 1.4,276; 1.5,274];

limit1 = input('Geben sie den unteren Grenzwert ein: ');
limit2 = input('Geben sie den unteren Grenzwert ein: ');

Ergebnis = myfunction(I,U,limit1,limit2)
 


Hier musst du dann eben eine weitere Schleife verwenden, welche die Eingangsvaribalen der Funktion entsprechend übergibt.

Gruß DSP
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.