for
循環的事情是您需要使用循環索引。循環索引是一個變量,每當您的循環即將開始時都會更新。 for
循環的工作原理是,您有一個包含在for
循環中的代碼體,該代碼體執行預定的時間量。用於for
環路的通常格式如下:
for idx = array
... %// BODY
...
end
的for
循環體中的代碼獲取多次在array
陣列的長度來執行。另外,idx
是我在談論的循環索引。具體而言,for
循環首次執行時,idx
將等於array
的第一個元素。第二次執行for
循環時,idx
將等於array
等的第二個元素。因此,你可以這樣做很簡單:
for idx = 1 : 7
disp(idx)
end
的for
循環將執行使得它第一次執行body
,idx = 1
代碼,第二次體代碼執行,,直到最後一個元素是idx = 7
。因此,上面的代碼就相當於:
disp(1)
disp(2)
disp(3)
disp(4)
disp(5)
disp(6)
disp(7)
而不是寫7條語句,你for
循環模擬了相同的行爲。它顯然看起來更清潔。
您需要知道的最後一件事是如何索引到數組中。我不會詳細介紹它,因爲這些評論會給你一些關於如何做的很好的教程,但將數組看作一堆放置在一起的插槽。每個插槽都會放些東西。在這種情況下,myStr
將包含一個字符串,其中每個插槽是單個字符。數組wordLength
告訴你如何長每個單詞是和startPos
告訴你每個單詞開始的位置。
要訪問陣列中的一個元素,你會怎麼做:
myStr(k)
k
將是您要在陣列中訪問的位置。 k
從1開始直到數組結束。訪問數組的另一個好方法是使用索引。基本上,您可以一次獲取大量值,而不是像上面那樣以單一方式訪問它們。具體來說,你可以這樣做:
myStr(first:last)
first
是你要訪問的last
是您要訪問的最後一個值的起始位置。輸出將爲您提供一系列存儲在陣列中的值,這些值將從您需要的數組中捕獲first
到last
的值。
因此,您必須使用for
循環以及每個字符串的起始位置,以及每個串是爲了顯示完整的單詞有多長。換句話說,你需要這樣做:
for i = 1 : 7
disp(myStr(startPos(i):startPos(i)+wordLength(i)));
end
此外,一個小調。爲使此代碼正常工作,您的am I
陣列中的I
之後應該有一個空間。作爲這樣:
myStr = ['what ' 'am I ' 'doing with my life?'];
在任何情況下,什麼上面的代碼的意思是,對於i
(1,2,3,4,5,6,7
)的每個值,我們將要訪問陣列,使得在對於第i 個起始位置單詞,我們捕捉到由這個詞的單詞長度決定的許多字符。假設我們的第一個單詞的開始位於我們數組的第3個位置,並且該單詞的長度爲5個字符(包括空格)。你會基本上是抓住從位置3個字符多達8的位置,因此你將基本上做到:
mystr(3:8)
的for
循環基本上是這樣做的,但重複它在陣列中的每一個字。因此,這是我運行上面的代碼時得到的結果,注意到在am I
字符串中添加空間的輕微修復。
what
am
I
doing
with
my
life?
你或許應該有一個基本的MATLAB教程首先啓動,對於爲例https://www.mathworks.co.uk/academia/student_center/tutorials/register.html – am304 2014-09-24 14:59:04
[循環](HTTP:// WWW .mathworks.com/help/matlab/matlab_prog/loop-control-statements.html)和[「Array」(Matrix)](http://www.mathworks.com/help/matlab/math/matrix-indexing.html ) – 2014-09-24 15:24:47