Matlab 如何循环和访问矩阵中的元素?

Matlab 如何循环和访问矩阵中的元素?,matlab,for-loop,matrix,Matlab,For Loop,Matrix,问题是,我必须填补这些空白,以便在循环的每次迭代中只打印字符串中的一个单词。我尝试了I=1:7,以及disp(myStr),但它只打印了7次字符串 如何正确执行?使用for循环时,需要使用循环索引。循环索引是一个变量,它在每次循环即将开始时更新。for循环的工作原理是,您有一个包含在for循环中的代码体,它被执行了预定的次数。for循环的通常格式如下: myStr = ['what ' 'am I' 'doing with my life?']; wordLength = [4 2 1

问题是,我必须填补这些空白,以便在循环的每次迭代中只打印字符串中的一个单词。我尝试了
I=1:7
,以及
disp(myStr)
,但它只打印了7次字符串


如何正确执行?

使用
for
循环时,需要使用循环索引。循环索引是一个变量,它在每次循环即将开始时更新。
for
循环的工作原理是,您有一个包含在
for
循环中的代码体,它被执行了预定的次数。
for
循环的通常格式如下:

myStr = ['what ' 'am I' 'doing with my life?'];    
wordLength = [4 2 1 5 4 2 4];    
startPos = [1 6 9 11 17 22 25]

for i = ____________________

disp(_________________)

end
for
循环体中的代码执行次数与
array
中的数组长度相同。另外,
idx
是我刚才提到的循环索引。具体来说,第一次执行
for
循环时,
idx
将等于
数组的第一个元素。第二次执行
for
循环时,
idx
将等于
array
的第二个元素,依此类推。因此,您可以做一些非常简单的事情,如:

for idx = array
    ... %// BODY
    ...
 end
执行
for
循环时,第一次执行
正文中的代码时,
idx=1
,第二次执行正文代码时,
idx=2
,直到最后一个元素
idx=7
。因此,上述代码相当于:

for idx = 1 : 7
    disp(idx)
end
您的
for
循环模仿相同的行为,而不是编写7条语句。它显然看起来更干净


您最不需要知道的是如何索引到数组中。我不会详细讨论它,因为这些评论为您提供了一些关于如何做到这一点的很棒的教程,但可以将数组看作是一组放置在一起的插槽。每个插槽都可以容纳一些东西。在这种情况下,
myStr
将包含一个字符串,其中每个插槽都是一个字符。数组
wordLength
告诉您每个单词的long长度,
startPos
告诉您每个单词的起始位置

要访问数组中的单个元素,请执行以下操作:

disp(1)
disp(2)
disp(3)
disp(4)
disp(5)
disp(6)
disp(7)
k
将是您要在阵列中访问的位置
k
从1开始,直到数组结束。另一种访问数组的好方法是使用索引。基本上,您可以一次获取一大堆值,而不是像上面那样以单一方式访问它们。具体来说,您可以执行以下操作:

myStr(k)
first
是要访问的起始位置,
last
是要访问的最后一个值。输出将为您提供存储在数组中的一系列值,这些值从您想要的数组中的
first
last


因此,必须使用
for
循环以及每个字符串的起始位置,以及每个字符串的长度,才能显示完整的单词。换句话说,您需要执行以下操作:

myStr(first:last)
还有一个小音符。要使此代码正常工作,在
am I
数组中的
I
后面应该有一个空格。因此:

for i = 1 : 7
    disp(myStr(startPos(i):startPos(i)+wordLength(i)));
end
在任何情况下,上面的代码所说的是,对于
i
1,2,3,4,5,6,7
)的每个值,我们将访问数组,以便在第i个单词的起始位置,捕获该单词的单词长度所指示的尽可能多的字符。假设第一个单词的开头在数组的位置3,单词有5个字符长(包括空格)。您基本上可以从位置3到位置8抓取字符。所以你基本上会这样做:

myStr = ['what ' 'am I ' 'doing with my life?'];
for
循环基本上就是这样做的,但是对数组中的每个单词重复它。因此,这就是我在运行上述代码时得到的结果,注意到在
am I
字符串中添加一个空格的轻微修正

mystr(3:8)

您可能应该首先从基本的MATLAB教程开始,例如example和@Manahil,非常欢迎。如果有帮助,请考虑接受我的回答:
what 
am 
I 
doing 
with 
my 
life?