2017-03-25 139 views
-3

我是MATLAB的初学者,我被要求做一个练习来学习循环。我有5个数字,1到5(1,2,3,4,5),这个数字中的每一个都会显示一个由四个阶段组成的转换过程,例如5(5将是 - > 5 (第一阶段的末尾)4(在第二阶段3(第三阶段)2(第二阶段)1(第一阶段)的末尾),对于4(4,4,3,2),对于3(3,对于2(2,2,2,1)和1(1 1 1 1),我需要输出(对于每个数字)每次迭代的结果(例如对于5 - > 5(迭代1),4(迭代2)等),所以任何一个可以帮助我在这个练习?它的混乱,我作为一个初学者。多谢For循环练习matlab

+2

即使它不能正常工作,您可以发布迄今为止尝试过的东西吗?我们可以为您提供解决方案,但如果您先尝试一下,您将学到更多东西。要自己查找错误,使用[matlab调试器](https://nl.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html)一步一步地运行代码可能会有帮助。 。 – m7913d

+0

它看起来功课(我没有downvote,顺便说一句)。在这里许多人不会认可家庭作业是一个合理的问题。我建议你付出一些努力,把它从纯粹的功课带到一定程度的格式问题,这样可以让开发人员回答你的特定问题。这样,你会学得更好,更快。 – Developer

+0

谢谢你们的回复。没有它不是一个硬件,我只是试图做这个想法只为练习目的。这是我已经达到: –

回答

0

时退房for loop关于The MathWorks。

它不是特别清楚你在问什么,我建议你把问题编辑给马清楚你想要做什么以及你在做什么的问题。

看来你应该只使用一个循环。你可以从每个循环的每个元素中减去1,但是要加上一个限制,所以元素不会变为零。为了解决这个问题,你可以使用find function来得到每个元素的索引,然后在for循环中,如果元素变为< 1将元素设置为1,则会包含限制。这样,如果运行5个步骤,最终将在迭代结束时使所有元素等于1。

要每次输出迭代编号,只需在循环内部放置要迭代的变量即可。

for n=5:-1:1 %decrements from 5 to 1 A-1; %A is the vector you started with n %by not suppressing the output with a semicolon will show the value of n in the command window. You could also use disp(n) indZeroEl = find(A==0); %the index of any element equal to zero A(indZeroEL) = 1; end

我没有访问MATLAB的,现在要检查这一点,但至少应该让你在正确的线路。