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?