question about how to avoid using eval
    3 ビュー (過去 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
参考
カテゴリ
				Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!