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