【问题标题】:Matlab functions - how to capture vector outputs into a single variable?Matlab 函数 - 如何将矢量输出捕获到单个变量中?
【发布时间】:2015-02-18 04:26:43
【问题描述】:

我在提取各种函数的输出并在计算时定义它们时遇到问题。我想要一个主文档来执行以下任务:

fcost(变量)

--> 向量输出 f = 矢量输出。

具体代码如下:

function fcost(hours,heatcost,slack1,slack2,realdata)


ncalc = 4 * hours;

P = zeros(ncalc*3*4,1);

if realdata == 2;

    SIN = sin((1:ncalc*4)/8)*0.5+0.7

    P(1:3:end) = SIN(1:ncalc*4);
    P(2:3:end) = slack1;
    P(3:3:end) = slack2;

else

    P(1:3:end) = heatcost;
    P(2:3:end) = slack1;
    P(3:3:end) = slack2;

end
P
format short
end

问题在于该函数只吐出向量 - 并没有为要使用的主文件定义任何内容。

提前致谢!

【问题讨论】:

    标签: matlab function vector


    【解决方案1】:

    编写的代码仅显示向量而不返回它。您的代码的函数头很明显:

    function fcost(hours,heatcost,slack1,slack2,realdata)
    

    这声明了一个带有各种参数的函数fcost,但它不返回任何东西。如果你想在调用fcost之后返回P,你需要修改你的函数头为:

    function P = fcost(hours,heatcost,slack1,slack2,realdata)
    

    现在将此函数保存到一个名为fcost.m 的文件中,然后在需要使用它时执行以下操作:

    P = fcost(hours, heatcost, slack1, slack2, realdata);
    

    fcost 的输出将存储在P 中。因为您现在返回P,所以您可能希望删除代码的最后两个详细语句。具体来说,删除这两行:

    P
    format short
    

    【讨论】:

    • 感谢您的解释!我一直在四处寻找这样的故障,我确定他们在那里,但还没有偶然发现。
    • @RasmusElbaek - 没问题 :) 如果我提供了帮助而您不再需要帮助,请考虑接受我的回答。单击我的帖子顶部的复选标记图标,位于上下投票箭头下方的左侧。祝你好运!