Matlab:在循环

时间:2016-06-02 15:03:42

标签: matlab loops indexing

我有大电流和电压的大数据文件。我测量了几次我的设备,但测量次数各不相同。我首先询问用户有多少轮测量,之后我循环从数据中提取电流。我当前的变量是200x3000双精度数组。我称它们为例如Isd_round1,Isd_round2等......

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

之后,我想绘制并比较电流,但我似乎找不到通过改变索引来调用变量的方法。我想做这样的事情:

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

我不知道如何通过更改循环中的索引来调用变量。

我也可以做一个所有电流的数组,但由于每个电流已经是(n,m)双数组,我怎样才能创建一个变量“current”,我将指定“Isd_round1”?

1 个答案:

答案 0 :(得分:0)

我建议使用单元格数组来存储数据,如前所述。以下是一些示例代码,如何执行此操作:

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)