使用while循环存储值(matlab)

时间:2016-11-07 05:51:55

标签: matlab loops while-loop store

我有一个while循环,我无法确定如何成功存储值。任何帮助将不胜感激。

a

我想要存储的值是create or replace FUNCTION my_function(p_val IN varchar2) RETURN SYS_REFCURSOR AS my_cursor SYS_REFCURSOR; BEGIN OPEN my_cursor FOR SELECT emp_name FROM employees WHERE lower(emp_name) like lower(p_val||'%'); RETURN my_cursor; END; ,我可以告诉循环中的值是正确的,但似乎无法正确存储值。

2 个答案:

答案 0 :(得分:1)

另一种方法是认识到这是一个相对简单的递归关系:

n = 0; a = 21; y = 37.6991; T = 18.5; z = 0.1591; f = 15.3049; q = 2.2391e4; e = 5; x = 60;
while n < x
    a(end+1) = a(end) + f * y * (T - a(end)) / (q * z);
    n = n + e;
end

这个计算也可以进行矢量化,但是如果你想要完全相同的输出,你需要小心一点:

n  = 5:5:55; y = 37.6991; T = 18.5; z = 0.1591; f = 15.3049; q = 2.2391e4; a0 = 21;
alpha = f * y * T / (q * z);
beta  = (1 - f * y / (q * z)).^(0:length(n))

a = a0 * beta + alpha * [0 cumsum(beta(1:end-1))];

代码似乎在向量化时失去了清晰度(对我来说),所以在这种情况下我可能更喜欢循环。

答案 1 :(得分:0)

试试这个:

counter = 1;
n = 0; a = 21; b = 0; c = 0; y = 37.6991; T = 18.5; z = 0.1591; d = 0; f = 15.3049; q = 2.2391e4; e = 5; x = 60;  
var = zeros(1,12);
while n < x
        a = a + b;                 
        c = y*(T-a)/z;                   
        d = f*c;              
        b = d/q;                  
        n = n + e; 
        var(counter) = a;
        counter = counter+1;
end

我添加了一个名为var的变量,它是一个存储a值的向量。按顺序运行,我将它初始化为变量var = zeros(1,12);的预期大小(这不是严格要求的,但建议使用。