matlab在矩阵中存储循环函数的多个输出

时间:2014-05-02 18:25:13

标签: matlab loops matrix output store

我正在尝试保存以下函数的输出(它为输入1的每次迭代提供两个输出,其余的保持不变)。

该函数为银行间市场创建压力测试,测试样本中每个银行违约的影响(输出为capital_losses和defaulted_banks),即input1必须从1开始:(长度(input2),4这里提供的代码,最终代码中的300+,所以我需要一个循环

这里是银行3违约的一次迭代样本

input1 = 3; % default_bank
input2=[100000;200000;300000;400000]; % capital levels in the function
input3 = ...
 [70000, 15000, 24000, 52453; 
  23420, 24252, 10000, 35354; 
  98763, 45666, 96555, 05000; 
  09800, 54444, 04336, 67520]; % interbank loans in the function
input4 = 1; 
input5 = .35; 
input6 = 1; 
% function calls on above inputs
[capital_losses defaulted_banks] = interbank_model( ...
input1, input2, input3, input4, input5, input6)

这是一次使用default_bank = 3的迭代的标准输出,但是我需要这个300+,所以循环会很有用......

capital_losses3 =
1.0e+05 *
     0.5857
     0.2598
     3.0000
     0.0609


defaulted_banks3 =
     0 
     0
     1
     0

我想得到每个默认银行的输出,即由for循环显示default_bank = 1:4,如下所示: capital_losses_all =

1.0e + 05 *

1.0000    0.2320    0.5857    0.5857
0.2867    2.0000    0.2598    0.2598
1.0716    0.4917    3.0000    3.0000
0.2816    0.6682    0.0609    0.0609

defaulted_banks_all =

 1     0     0     0
 0     1     0     0
 0     0     1     0
 0     0     0     1

这是手动生成的,但我如何将值存储在矩阵中? 谢谢你的帮助。 (之前我有一个类似的问题,但编辑和评论变得非常混乱,所以这里是我改进的呼救...) 克里斯

1 个答案:

答案 0 :(得分:0)

非常一般的答案(适应您的需要):

valuesThatChange = [1 3 5 4 2]; % different for each iteration in the loop
% values that don't change:
a=1;
b=2;
c=3;

N = numel(valuesThatChange);
% create storage for results:
results = zeros(4, N);

% loop N times
for ii=1:N
  results(:,ii) = functionCall(valuesThatChange(ii), a, b, c); % returns a 4 element result
end

现在,您可以获得4xN矩阵中每个循环的函数结果。