我是一個新手。我有個問題。 我有20個(1x100)不同名稱的向量。我想把這些向量結合起來,用for回圈創建一個20x100的矩陣。 這里有一些向量的例子。
namelist=["First","B","New"]
First = [1:100]
B = [1:2:200]
新 = [4:4:400]
for i = 1。length(namelist)
new_database(i,1:end) = namelist{i}
end] = namelist{i}。
但是,當我想嘗試這樣做時,我看到了 "結束運算子必須在陣列索引運算式中使用 "的錯誤。 我知道我可以用這個做同樣的事情。 "new_database= [First;B;New]"/p>
但是我想用for回圈來做這個。 你能幫我解決這個錯誤嗎?或者你能解釋一下如何做到這一點嗎?
uj5u.com熱心網友回復:
你的問題出在這一行:
你的問題出在這一行。
new_database(i,1:end) = namelist{i}
大括號是專門用于單元格的,沒有必要像你那樣使用范圍索引(i,1:end)
一般來說,將字符陣列或字串分配給單元格是更好的做法。
有一個問題,你對 "第一"、"新 "和 "B "范圍的陣列做了什么?
比如說:
namelist=["First"/span>,"B"/span>,"New"/span>]
First = [1:100] 。
B = [1:2:200]。
New = [4:4:400] 。
new_database = cell(1, length(namelist))。
for i = 1: length(namelist) % or length(new_database).
new_database{i} = namelist(i)
結束。
這就產生了這個輸出:
編輯:我很抱歉,現在我知道你想要完成什么了。你正在從一系列的陣列中建立一個資料庫,對嗎?
根據我之前的回答,你必須考慮以下幾點:
1 你的 new_digure 是一個資料庫。
1 你的 new_database 應該是方形的。不管你傳遞給它的陣列的尺寸是多少,如果你從這些陣列中形成一個單元格,如果沒有資料傳遞給這些行或列,你將無一例外地擁有空的單元格
2 有些情況下,你的新資料庫應該是方形的。
2 在某些情況下,你不需要使用for-loops,簡單的索引可能足以解決你的案例問題。考慮一下下面這個使用cellstr的例子:
titles = ["position", "Fruits", "Mythical creatures"]
A = ["一"/span>, "二"/span>, "三"/span>] 。
B = ["蘋果"/span>, "香蕉"/span>, "榴蓮"/span>]。
C = ["龍"/span>, "貓"/span>, "倉鼠"/span>] 。
db = cell(4, 3) 。
db(1, :) = cellstr(title)
db(2:end,1) = cellstr(A)
db(2:end,2) = cellstr(B)
db(2:end,3) = cellstr(C)
這就產生了這個輸出:
uj5u.com熱心網友回復:
"結束符必須在陣列索引運算式中使用。"的原因是你的new_database變數還沒有被初始化。你必須在你的for回圈之前建立一個空變數。如果你想按照描述的那樣做,你還必須使用eval。
new_database = [] []
for i = 1: length(namelist)
new_database(i, :) = eval(namelist{i})
結束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/309695.html
標籤:


