question about how to avoid using eval

1 回表示 (過去 30 日間)
Baozai
Baozai 2016 年 11 月 22 日
コメント済み: Baozai 2016 年 11 月 22 日
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

採用された回答

Walter Roberson
Walter Roberson 2016 年 11 月 22 日
Resp.(sprintf('Phi%d',jjjj).(sprintf('Mu%d',iiii)),.Respx1(kkkk,:) = x1(kkkk,:);
  5 件のコメント
Walter Roberson
Walter Roberson 2016 年 11 月 22 日
You are right,
Resp.(sprintf('Phi%d',jjjj)).(sprintf('Mu%d',iiii)).Respx1(kkkk,:) = x1(kkkk,:);
Baozai
Baozai 2016 年 11 月 22 日
This works, thank you very much.

サインインしてコメントする。

その他の回答 (1 件)

KSSV
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
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
Baozai
Baozai 2016 年 11 月 22 日
This one also works, thank you very much for your help.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by