MATLAB中的数据序列

时间:2017-01-05 15:53:10

标签: matlab

我在MATLAB中有数据序列:data1,data2,data3,....我想一个接一个地打印它们。我被困在那。

clear; clc;
data1=[1,2];
data2=[3,4];
n=[1,2];
for i=1:length(n)
    fname(i,:)=sprintf('data%d',n(i));
end

2 个答案:

答案 0 :(得分:1)

这对你有用吗?

clear; clc;
data1=[1,2];
data2=[3,4];
n=[1,2];
for i=1:length(n)
    eval(['data' num2str(n(i))])
end

答案 1 :(得分:1)

不涉及使用eval的可能解决方案如下:

基本上它包含以下步骤:

  • 获取工作区中的数据列表(使用who功能)
  • 确定要打印的数据(使用regexp来识别datax表格的变量名称,其中x是一个数字)
  • 将这些变量保存在临时.mat文件
  • .mat文件加载到允许仅打印变量的结构中
  • 利用dynamic field names访问变量

这段代码:

% 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)

希望这有帮助。

Qapla'