matlab操作struct

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

你可能感兴趣的:(matlab)