【问题标题】:Calling function with changing input parameters in a loop Matlab在循环中更改输入参数的调用函数 Matlab
【发布时间】:2012-04-04 23:38:59
【问题描述】:

我遇到了一个问题,我知道这并不难,但我不知道如何实现它。我有一个看起来像的 m 文件

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 

我想在主 m 文件的 for 循环中将 i 的值从 obj.m_Core_List(1) 更改为 obj.m_Core_List(27)。当我在主 m 文件中调用函数 coreselect 时,如何获取函数的值 例如,对于 m=1 到 70,我希望函数取 i=1 的值,然后执行直到 plot 命令,然后与但 i=2 相同,依此类推 任何建议都会很有帮助

【问题讨论】:

  • 感谢乔治,它成功了。但是在绘制数据时我只得到数据点但没有连接它们的线我尝试使用网格网格但它似乎没有工作

标签: function matlab for-loop


【解决方案1】:

我不确定我是否完全理解您的问题,但我认为您想将索引 i 传递给 CoreSelect 函数,并在函数外从 1 到 27 循环 i。试试这个:

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

for i=1:27,
   PVInv.CoreSelect(WaAc,i);
end

【讨论】:

    猜你喜欢
    • 2011-04-10
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多