Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中的独立迭代循环_Matlab_Loops - Fatal编程技术网

MATLAB中的独立迭代循环

MATLAB中的独立迭代循环,matlab,loops,Matlab,Loops,我想用MATLAB中的以下方程组计算变量h。什么是正确的写作方式 h(1) = 1 - z(1); h(2) = 1 - h(1) - z(2); h(3) = 1 - h(1) - h(2) - z(3); h(4) = 1 - h(1) - h(2) - h(3) - z(4); h(5) = 1 - h(1) - h(2) - h(3) - h(4) - z(5); h(6) = 1 - h(1) - h(2) - h(3) - h(4) - h(5) - z(6); 下面的代码应该可以

我想用MATLAB中的以下方程组计算变量h。什么是正确的写作方式

h(1) = 1 - z(1);
h(2) = 1 - h(1) - z(2);
h(3) = 1 - h(1) - h(2) - z(3);
h(4) = 1 - h(1) - h(2) - h(3) - z(4);
h(5) = 1 - h(1) - h(2) - h(3) - h(4) - z(5);
h(6) = 1 - h(1) - h(2) - h(3) - h(4) - h(5) - z(6);

下面的代码应该可以正常工作。诀窍是设置一个包含z的数组

h=[]% empty array
h(1)=1-z(1)
for counter=2:N
    h(counter)=1-cumsum(diff(h(1:counter-1)))-z(counter)

end

下面的代码应该可以正常工作。诀窍是设置一个包含z的数组

h=[]% empty array
h(1)=1-z(1)
for counter=2:N
    h(counter)=1-cumsum(diff(h(1:counter-1)))-z(counter)

end

您可以使用
diff
来实现这一点,它可以获取任意两个元素之间的差异

z = [1 4 5 7 8 3];

h = [0 -diff(z)];
%     0    -3    -1    -2    -1     5
我们决定如何使用
diff
是因为我们可以很容易地写出术语,并看到大多数内容都被取消了

h(2) = 1 - h(1) - z(2)
h(2) = 1 - (1 - z(1)) - z(2)
h(2) = 1 - 1 + z(1) - z(2)
h(2) = z(1) - z(2)

您可以使用
diff
来实现这一点,它可以获取任意两个元素之间的差异

z = [1 4 5 7 8 3];

h = [0 -diff(z)];
%     0    -3    -1    -2    -1     5
我们决定如何使用
diff
是因为我们可以很容易地写出术语,并看到大多数内容都被取消了

h(2) = 1 - h(1) - z(2)
h(2) = 1 - (1 - z(1)) - z(2)
h(2) = 1 - 1 + z(1) - z(2)
h(2) = z(1) - z(2)

嗨,不,它不工作。它只在右侧取一个h值,但要减去的h变量的数量随着阶数的增加而增加。您应该研究使用diff命令和累积和来计算h的累积差值。这会在循环中每次扩展
h
,这是非常低效的。我也更喜欢你的解决方案。我尝试了编辑版本,现在我有一个错误,说元素的数量不一样。嗨,不,它不起作用。它只在右侧取一个h值,但要减去的h变量的数量随着阶数的增加而增加。您应该研究使用diff命令和累积和来计算h的累积差值。这会在循环中每次扩展
h
,这是非常低效的。我也更喜欢你的解决方案。我尝试了编辑版本,现在我有一个错误,说元素的数量不一样。对不起,为什么是cumsum?在每个方程中,它有不同的值。嗨,是的。我试试这个。对不起,为什么是卡姆森?在每个方程中,它有不同的值。嗨,是的。我试试这个。