【问题标题】:Generating a trinomial tree in matlab在matlab中生成三叉树
【发布时间】:2015-07-21 11:54:31
【问题描述】:

我要做的是生成一系列向量来模拟非重组三叉树的结构。这是我的代码:

function Trinomial_tree
S{1}(1) = 100;
w{1} = 1.4;
w{2} = 1.1;
w{3} = 0.7;
T = 2;
%Compiling the w's into a vector
w = [w{1}, w{2}, w{3}];
%Actual vector-content generation goes here, right now the k-allocation
%doesn't work as intended. In the second run with i=3, k seems to be
%fixed on 3 
%{
for i = 2:(T+1)
    S{i} = zeros(1, 3^(1i-1));
end
%}
for i = 2:(T+1)
    S{i} = Node(w, T, i, S{i-1});
end
display(S{1})
display(S{2})
display(S{3})
end

这是节点函数:

function [S] = Node(w, T, i, S_1)
%Compute the continuing node of a point
%Pre-allocation
S = zeros(1, 3^(i-1));
%Nested loop which generates the different nodes
for k = 1:(3^(i-2))
for j = 1:((3^T)-2):3
S(j) = S_1(k) * w(1);
S(j+1) = S_1(k) * w(2);
S(j+2) = S_1(k) * w(3);
end
end

我进行了各种测试,但总是以同样的问题结束。 node.m 函数仅在时间 t=2 编辑行向量的前 3 个条目,但将其他 6 个条目排除在外。在我看来,我在循环中犯了一个错误,以至于它没有在时间 t=1 获取向量的下一个值。

这也可能只是我把问题复杂化了,而我忽略了一个更简单、更明显的解决方案。

任何帮助将不胜感激。

【问题讨论】:

    标签: matlab tree nested-loops function-handle


    【解决方案1】:

    对于Nodej 循环,您有j = 1:((3^T)-2):3

    T = 2 时,这相当于j = 1:7:3。 因此j 将永远只有1 的值。 (下一个值是 8,大于 3,因此循环停止。)

    【讨论】:

    • 非常感谢菲尔!我肯定在那里犯了一个错误。遗憾的是,它并没有立即解决我的问题,但你的提示使我能够证明 j 对 k 的依赖,这样我终于设法让算法工作了。
    猜你喜欢
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2015-03-04
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多