2012-03-20 17 views
0

私は問題に巻き込まれましたが、それは難しいことではありませんが、実装方法を理解できませんでした。私はループ内の入力パラメータを変更して関数を呼び出すMatlab

clear; 
PVinv.m_SwF=20e3 

for m=1:1:70; 

PVinv.m_SwF=PVinv.m_SwF+1e3; 
Lmin = PVinv.InductanceDimens(); 
Wa_Ac = PVinv.CoreSizeModel(); 
PVinv.CoreSelect(Wa_Ac); 
[loss_ind_core,loss_ind_copper] = PVinv.InductorLossModel(PVinv.m_L_Selected); 
Total_Inductor_Loss=loss_ind_core+loss_ind_copper 
plot(PVinv.m_SwF,Total_Inductor_Loss,'--gs'); 
hold on 
xlim([10e3 90e3]) 
set(gca,'XTickLabel',{'10';'20';'30';'40';'50';'60';'70';'80';'90'}) 
grid on 
xlabel('Switching Frequency [kHz]'); 
ylabel('Power loss [W]'); 

end 

のように見えるメートルファイル、関心のある機能ですCORESELECT(Wa_Ac)

function obj = CoreSelect(obj, WaAc) 
      obj.m_Core_Available= obj.m_Core_List(i); 
      obj.m_L_Selected.m_Core = obj.m_Core_Available; 

end 

私はobj.m_Core_Listからiの値を変更したいを持っている(1)〜 obj.m_Core_List(27)は、メインmファイルのforループ内にあります。メインmファイルでコールすると関数coreselectの値を得る方法 たとえばm = 1〜70の場合、関数がi = 1の値をとり、plotコマンドまで実行してからiと同じにする= 2など 上の任意の提案は本当に参考になる

+0

ありがとうGeorgeさんは働いています。しかし、データをプロットすると、データポイントしか得られませんが、それらを結ぶ線はありません。meshgridを使ってみましたが、うまくいきませんでした。 – mirage

答えて

1

1の外側27からループi私は、私は完全にあなたの質問を理解していないが、私はあなたがCoreSelect関数にインデックスiを渡したいと思うし、関数のこれを試してください:

function obj = CoreSelect(obj, WaAc, i) 
... 
end 

for i=1:27, 
    PVInv.CoreSelect(WaAc,i); 
end 
関連する問題