绘制结构数组Matlab - 有趣的案例

时间:2015-08-05 14:18:03

标签: matlab recursion struct field matlab-figure

假设我有一个表单结构:

firstrun.(char(patient(ldy,1))).(char(dypatient(llc,1))).(char(lcpatient(mps,1))).MaxCount;

结构变量然后具有长度为i的患者,该患者也具有长度j,依此类推。这允许我们有一棵树,以便我们可以从现场患者中挑选一个并选择与该患者相关的其他领域。

现在在行的末尾或最后一个存储所有值的字段中,我有一个包含单个值的字段。 MAXCOUNT。如下面的代码。

每位患者都有第一天或第一天,医院ID或位置。在提交的位置我有一个MaxCount。

例如,在第二天或第二天,我有相同的医院ID或位置,但具有不同的MaxCount。

我想在数天内有一个最大计数的图,记住这些是奇异值。例如:

firstrun.patientID.dayID_1.hospID_3.MaxCount is only 39
firstrun.patientID.dayID_2.hospID_3.MaxCount is only 22
.
.
.
firstrun.patientID.dayID_i.hospID_j.MaxCount is only 2

The vector to plot is then [39, 22, ...., n]

所以我对几天内每个医院ID或位置的访问次数有不同的情节。

%% load file

load('/Users/dave/Desktop/firstrun.mat')

   if exist('firstrun','var')==1

        patient = fieldnames(firstrun);
        for ldy = 1:length(patient);
            dypatient = fieldnames(firstrun.(char(patient(ldy,1))));
            for llc = 1:length(dypatient);
                lcpatient = fieldnames(firstrun.(char(patient(ldy,1))).(char(dypatient(llc,1))));
                for mps = 1:length(lcpatient);
                    pspatient = fieldnames(firstrun.(char(patient(ldy,1))).(char(dypatient(llc,1))).(char(lcpatient(mps,1))));
                    MaxCount = firstrun.(char(patient(ldy,1))).(char(dypatient(llc,1))).(char(lcpatient(mps,1))).MaxCount;





                end

            end

        end

           else

       disp('Variable does not exist') 

   end

如何为同一患者循环查看每天的位置,将相同位置分组在一起并绘制每个位置的访问变化情况?

谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

下面的代码是

%% load file

load('/Users/dave/Desktop/TrialRun.mat’)

if exist('variablestruct','var')==1

        patient = fieldnames(Patesyap);
        for ldy = 1:length(patient);
            dypatient = fieldnames(DataSynapto.(char(patient(ldy,1))));
            for llc = 1:length(dypatient);
                lcpatient = fieldnames(DataSynapto.(char(patient(ldy,1))).(char(dypatient(llc,1))));
                for mps = 1:length(lcpatient);
                    pspatient = fieldnames(DataSynapto.(char(patient(ldy,1))).(char(dypatient(llc,1))).(char(lcpatient(mps,1))));
                    MaxCount = DataSynapto.(char(patient(ldy,1))).(char(dypatient(llc,1))).(char(lcpatient(mps,1))).MaxCount;
                    TemppatientID = patient(ldy,1);
                    PlotpatientLoc.(char(TemppatientID))(llc,1).(char(lcpatient(mps,1)))=MaxCount;                                 
                end

            end

        end
   else

       disp('variablestruct does not exist') 

end



if exist('PlotpatientLoc','var')==1

    PlotHold = fieldnames(PlotpatientLoc);

    for patientIDPlot = 1:length(PlotHold);

        mpatient = fieldnames(PlotpatientLoc.(char(PlotHold(patientIDPlot,1))));

        for locloos = 1:length(mpatient);

            plot((1:max(size([PlotpatientLoc.(char(PlotHold(patientIDPlot,1))).(char(mpatient(locloos,1)))]))),...
                [PlotpatientLoc.(char(PlotHold(patientIDPlot,1))).(char(mpatient(locloos,1)))])
            hold on

        end

    end

else 
    disp('Plot Variable Do not exist') 
end