Eine mögliche Lösung nicht die Verwendung von eval
Beteiligung könnte folgende sein.
Grundsätzlich besteht es aus den folgenden Schritten:
- die Liste der Daten in dem Arbeitsbereich Erhalten (mit
who
Funktion)
- Identifizieren der zu druckenden Daten (unter Verwendung von
regexp
die Variablen Namen des identfy datax
Form, wo x
eine Zahl)
- speichern diese Variablen in einer temporären Datei
.mat
- Last der
.mat
Datei in eine Struktur, die nur die Variablen haben können
- gedruckt werden nutzen die
dynamic field names
Zugriff auf die Variablen
Dies ist der Code zu erhalten:
% Define some data
data1=[1,2];
data2=[3,4];
data3=rand(5)
data4a=rand(5)
dataaaa3=rand(5)
var_1=1
b=2
% Get the list of data in the Workspace
str=who
% Identify the data to be printed
var_to_print=regexp(str,'data\d$')
idx=~cellfun(@isempty,var_to_print)
% Down select the variables to be printed
str{idx}
% Generate a temporary ".mat" filename
tmp_name=[tempname '.mat']
% Save the data to be printed in the temporary ".mat" file
save(tmp_name,str{idx})
% Load the data to be printed into a struct
v=load(tmp_name)
% Get the names of the varaibles to be printed
f_name=fieldnames(v)
% print the value of the variables
for i=1:length(f_name)
[char(f_name(i)) ' = ']
v.(f_name{i})
end
% Move the temporary ".mat" file in the recycle folder
recycle('on')
delete(tmp_name)
Hoffnung, das hilft.
Qapla '
Haben Sie 'disp (data1)' versucht? – Suever
Wenn ich 'disp (data1)' es zeigt die Matrix aber, möchte ich alle Matrizen anzeigen, die ich habe und ich will es durch einen Zyklus, weil sie viele wie 70 sind, und 'disp (fname (1, :)) 'funktioniert nicht, es zeigt nur data1. –
Warum hätten Sie 70 separate Datenvariablen anstelle eines einzelnen zweidimensionalen Arrays (oder eines Zellenarrays, wenn die Variablen unterschiedliche Längen haben), die Sie problemlos durchlaufen können? – beaker