MATLAB-如何为循环计算的每次迭代创建输出

MATLAB-如何为循环计算的每次迭代创建输出,matlab,if-statement,for-loop,Matlab,If Statement,For Loop,此计算旨在获取一个值(a),并在循环的每次迭代中对其执行两次计算中的一次。每个顺序循环获取新的计算值并重新计算。我想保留每个循环的输出值。下面是一个示例,使用逻辑数组决定在5个循环中的每个循环上使用哪种计算: a = 0; b = logical([1 0 1 1 0]); for i = 1:length(b) if b(i) == 1 a = 1*2 + a*2 else a = a*3 end end 此示例不正确,因为它只为a返

此计算旨在获取一个值(
a
),并在循环的每次迭代中对其执行两次计算中的一次。每个顺序循环获取新的计算值并重新计算。我想保留每个循环的输出值。下面是一个示例,使用逻辑数组决定在5个循环中的每个循环上使用哪种计算:

a = 0;
b = logical([1 0 1 1 0]);

for i = 1:length(b)
    if b(i) == 1
        a = 1*2 + a*2
    else
        a = a*3
    end
end
此示例不正确,因为它只为
a
返回1个值,而不是5个值。此示例的预期结果为:

a = 2 6 14 30 90
请帮我修改这里的任何错误。非常感谢。

你可以这样做

a = [0];
b = logical([1 0 1 1 0]);

for i = 1:length(b)
    if b(i) == 1
        a(end+1) = 1*2 + a(end)*2;
    else
        a(end+1) = a(end)*3;
    end
end

几个Matlab惯用项:
numel(b)
length(b)
更合适。通常你会做
a(end+1)=a_next
而不是
a=[a,a_next]
。最好将输出预先分配为
a=NaN([1 numel(b)+1]);a(1)=0
然后使用
a(i+1)=a_next
将其分配到
a
,以避免在循环的每个过程中对整个数组进行无效的重新分配。