matlab操作struct

1985 ワード

1、matlabはjsonファイルjsonData=loadjson(jsonPath)を取得する.2.jsonファイルのネスト変数ueNum=struct(‘tPuschParIn’,jsonData.tPuschParIn)を取得する.tPuschParIn.iPuschUeNum; 3、structある変数の値を取得し、getfield関数value=getfield(tSystemParIn,‘iUE_RNTI’);4.structの配列変数の最初の値tSystemParInを修正する.iUE_RNTI(1) = value(i); 5、struct変数の値ループsignleFieldを一括修正して各変数field tPuschParIn=setfield(tPuschParIn,field,result)を得る.左ボタンが必要で、修正後の結果をtPuschParInに再割り当てします.そうしないとsetfieldは有効ではありません.6、全体コードは以下の通りです.
function [ueNum]=mulUeJsonSplit(jsonPath,pathName,upDown)%%
    addpath(genpath([pwd '\jsonlab']));  
    jsonData=loadjson(jsonPath);
    signleField = {'MCS','Layernum','RBStart','RBNum','CodeWordNum','iPtrsEn',...
        'TimeSpace','FreqSpace','RB_offset','RE_offset','Che_Method','bDeNoiseEn'};

    ueNum = struct('tPuschParIn',jsonData.tPuschParIn).tPuschParIn.iPuschUeNum;

    for i=1:ueNum
        %%
        tSystemParIn = struct('tSystemParIn',jsonData.tSystemParIn).tSystemParIn;  %struct
        value = getfield(tSystemParIn,'iUE_RNTI');
        valueLen = numel(value);
        tSystemParIn.iUE_RNTI(1) = value(i);
        for j = ueNum:valueLen-1
            tSystemParIn.iUE_RNTI(j) = 0;
        end
        %%
        tPuschParIn = struct('tPuschParIn',jsonData.tPuschParIn).tPuschParIn;  %struct
        [m,n] = size(signleField);
        for j = 1:n
            field = char(signleField(j));
            value1 = getfield(tPuschParIn,field);
            valueLen1 = numel(value1);
            result = [value1(i) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
            tPuschParIn = setfield(tPuschParIn,field,result);
        end
        %%
        jsonmesh=struct('tSystemParIn',tSystemParIn,...
              'tPuschParIn',tPuschParIn);
        fname=sprintf('ueId%d.json',i);
        savejson('',jsonmesh,fname);          
    end
end