2016-06-02 5 views
0

Ich habe große Dateien mit Strömen und Spannungen. Ich vermesse mehrmals meine Geräte, aber die Anzahl der Messungen variiert. Zuerst frage ich den Benutzer, wie viele Messrunden es gibt, danach mache ich eine Schleife, um die Ströme aus den Daten zu extrahieren. Meine aktuellen Variablen sind Arrays von 200x3000 Doubles. Ich nenne sie zum Beispiel Isd_round1, Isd_round2, etc ...Matlab: Variable mit unterschiedlichen Index in Schleife verwenden

for i=1:rounds_number 
    [filename,pathname]=uigetfile('*.mat', 'Select matlab data'); 
    pathname = cd(pathname); 
    pathname = strcat(pathname, '\', filename); 
    Val=load(pathname); 
    assignin('base', ['Isd1_round' num2str(i)], Val.Isd1) 

    ...etc... 

end 

Danach möchte ich die Ströme planen und zu vergleichen, aber ich kann nicht scheinen, einen Weg zu finden, um die Variablen aufrufen, indem Sie den Index zu ändern. Ich möchte so etwas wie dies tun:

figure 
hold on 
for j=1:rounds_number 
    plot(V, Isd_roundj) 
end 

Und ich weiß nicht, wie die Variablen aufrufen, indem Sie den Index in der Schleife zu ändern.

Ich könnte auch ein Array aller Ströme tun, aber da jeder Strom bereits eine Anordnung von (n, m) verdoppelt, wie kann ich eine Variable "Strom" erstellen, wo ich "Isd_round1" zuweisen würde?

+1

Mögliche Duplikat [Name Variable basierend auf Zeichenfolge MATLAB] (http://stackoverflow.com/questions/23017859/name-variable-based-on-string -matlab) – Suever

+0

Tun Sie das nicht. Verwenden Sie ein Zellen-Array, um Ihre Daten zu speichern, anstatt "assignin" zu verwenden. – Suever

+0

Ich habe am Ende der Post gefragt, wie ich das machen soll. Da jeder Strom bereits ein Array von 200x3000 verdoppelt, wie sollte ich ein Array von Arrays erstellen? – Blackcal

Antwort

0

Ich würde empfehlen, ein Zell-Array zu verwenden, um die Daten zu speichern, wie bereits erwähnt. Hier einige Beispiel-Code, wie dies zu tun:

dataCell = cell(rounds_number,1) 
% read data in 
for i=1:rounds_number 
     [filename,pathname]=uigetfile('*.mat', 'Select matlab data'); 
     pathname = cd(pathname); 
     pathname = strcat(pathname, '\', filename); 
     Val=load(pathname); 
     dataCell{i} =Val 
end 

%plot 
for i=1:rounds_number 
     plot(dataCell{i}) 
end 

%quicker, warning this plots all rounds at once 
cellfun(@(x) plot(x),dataCell) 
Verwandte Themen