从脚本到功能

时间:2014-05-26 12:39:52

标签: matlab function

我想知道是否可以从脚本中创建一个函数。为了澄清,我在Matlab中有脚本来计算商品的季节性溢价。由于我有多种商品,我制作了多个脚本,每个脚本都有相同的季节性编码。

现在我想将季节性脚本转换为函数,以便有一个清晰的主题! (为了计算季节性,我不得不使用200行)

关于季节性脚本的好处是我只有一个输入矩阵,输出将是三个矩阵。

或者是否可以在脚本中执行不同的脚本而不复制每一行?

2 个答案:

答案 0 :(得分:1)

请参阅功能文档here。这是一个例子:

function yourOutput = Seasonality(yourInput)
    yourOutput = yourInput + rand();  % Replace with your own code.
end

为清楚起见,此代码可另存为单独的.m文件。要在主脚本中使用它,只需像使用任何其他功能一样使用Seasonality。如果仍然不清楚,请将您的代码发布为您的问题的编辑,我会看一下并告诉您该怎么做。

答案 1 :(得分:0)

假设您有两个MATLAB脚本,如下所示:

x = 42
y = 43

% do some complicated calculations with x and y and display the result
% ...

w = 1
z = 0

% do the calculations from the first script, but with the values w and z
% ...

你可以简单地创建一个接受一些输入参数并返回结果的函数。 对于我们的简单示例,我们可以写:

function result = my_function(argument1, argument2)
   % do some complicated calculations with argument1 and argumen2
   % ...
   % assign result of the computation to the variable result
end

现在,您只需使用所需的任意两个输入值调用my_function即可。 有关详细信息,请参阅http://www.mathworks.de/de/help/matlab/ref/function.html - 这也将解释如何返回多个结果值。

以下是您的功能如何运作的快速草图:

function [M1 M2 M3] = my_function(input_argument)    
    % do some complicated calculations for M1, M2, M3 based on input_argument
    % ...

    % assign some bogus values to M1, M2, M3 for demonstration
    M1 = [1, 2; 3, 4];
    M2 = [5, 6, 7; 8, 9, 10];
    M3 = [11, 12; 13, 14; 15, 16];
 end

在解释器中调用my_function将如下所示:

>> [M1 M2 M3] = my_function(42)
M1 =
     1     2
     3     4
M2 =
     5     6     7
     8     9    10
M3 =
    11    12
    13    14
    15    16

请注意,保存my_function的文件应命名为my_function.m