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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值