question about how to avoid using eval
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello, all.
I got to know that using "eval" is not efficient and may cause several problems. I have used "eval" a lot in my previous codes.
If I want to replace the following expression without using "eval", would anyone help me one this? Thank you very much.
for jjjj=1:5
for iiii=1:40
for kkkk=1:3
x1(kkkk,:) = (1:10)*kkkk;
eval(['Resp.Phi',num2str(jjjj),'.Mu',num2str(iiii),'.Respx1(kkkk,:) = x1(kkkk,:);']);
end
end
end
댓글 수: 0
채택된 답변
Walter Roberson
2016년 11월 22일
Resp.(sprintf('Phi%d',jjjj).(sprintf('Mu%d',iiii)),.Respx1(kkkk,:) = x1(kkkk,:);
댓글 수: 5
Walter Roberson
2016년 11월 22일
You are right,
Resp.(sprintf('Phi%d',jjjj)).(sprintf('Mu%d',iiii)).Respx1(kkkk,:) = x1(kkkk,:);
추가 답변 (1개)
KSSV
2016년 11월 22일
iwant = cell(5,40,3) ;
for jjjj=1:5
for iiii=1:40
for kkkk=1:3
x1(kkkk,:) = (1:10)*kkkk;
iwant{jjjj,iiii,kkkk}= ['Resp.Phi',num2str(jjjj),'.Mu',num2str(iiii),'.Respx1(kkkk,:) = x1(kkkk,:);'] ;
end
end
end
댓글 수: 3
KSSV
2016년 11월 22일
편집: KSSV
2016년 11월 22일
Resp = struct ;
for jjjj=1:5
for iiii=1:40
for kkkk=1:3
x1(kkkk,:) = (1:10)*kkkk;
% iwant{jjjj,iiii,kkkk}= ['Resp.Phi',num2str(jjjj),'.Mu',num2str(iiii),'.Respx1(kkkk,:) = x1(kkkk,:);'] ;
end
for llll = 1:3
Resp(jjjj).Phi1(iiii).Mu1(llll).Respx1 = x1 ;
end
end
end
Resp(1).Phi1(1).Mu1
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!