[英]How to store two variables (x.y) from a loop?
我正在循環內生成兩個不同的坐標(x, y)
。 在我的代碼中,我剛剛意識到它正在保存循環中的最后一個變量。 但是,我正在嘗試保存setsize
變量中的所有迭代。 我已經嘗試使用以下方法進行保存:
circleposition = [0:length(setsize) x(i),y(i)];
但是,看來我做得不好,出現以下錯誤:
Subscript indices must either be real positive integers or logicals.-
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
這是我的原始代碼:
setsize = 9;
r = 340;
cx = 500;
cy = 500;
anglesegment = 2 * pi/setsize;
circleposition = [];
for i = drange (0:setsize)
x = r * cos(i*anglesegment) + cx;
y = r * sin(i*anglesegment) + cy;
circleposition = [x,y];
end
輸出:
circleposition =
0 1.0000
840.0000 500.0000
它僅在第一次/最后一次迭代時運行。 我需要得到9 x
和9 y
(取決於setsize,變量)。
聽到的是有效的代碼:
setsize = 9;
r = 340;
cx = 500;
cy = 500;
anglesegment = 2 * pi/setsize;
circleposition = zeros(setsize + 1, 2); % Changed from circleposition = []
for i = drange (0:setsize)
x = r * cos(i*anglesegment) + cx;
y = r * sin(i*anglesegment) + cy;
circleposition((i+1),:) = [x,y]; % Changed from circleposition = [x,y];
end
說明:
解決方法是更改circleposition = [x,y];
到circleposition((i+1),:) = [x,y]
。 如果不使用((i+1),:)
circleposition
更改circleposition
位置的數據,而不是對其進行添加。
更改circleposition = [];
到circleposition = zeros(setsize + 1, 2);
不需要,只是建議分配內存以提高速度,這對於少量元素來說不是問題。
很難理解,哪個錯誤消息來自哪個嘗試,但是讓我們看一下。
我沒有訪問Parallel Computing Toolbox的權限,這似乎是在分布式范圍drange
上使用for循環所drange
,但是我認為,可以用for i = 0:setsize
代替此循環進行測試。
現在,從i = 0
,您將嘗試訪問x(0)
和y(0)
,這是不允許的(下標索引必須為實數正整數或邏輯 )。 另外,如您在問題中所述,您將獲得10個值而不是9個值。 因此,讓我們從i = 1
開始。
要存儲所有9對x
和y
,您的circleposition
應該是9 x 2
數組。因此,可以通過例如circleposition = zeros(setsize, 2)
進行初始化。
最后,您需要使用適當的索引來將[x, y]
存儲在circleposition
位置的第i
行,即circleposition(i, :)
。
因此,更正后的代碼(注意替換的drange
部分)如下所示:
setsize = 9;
r = 340;
cx = 500;
cy = 500;
anglesegment = 2 * pi/setsize;
circleposition = zeros(setsize, 2); % Initialize circleposition appropriately
for i = 1:setsize % Start at i = 1
x = r * cos(i*anglesegment) + cx;
y = r * sin(i*anglesegment) + cy;
circleposition(i, :) = [x, y]; % Correct indexing of the row
end
circleposition % Output
輸出將是:
circleposition =
760.46 718.55
559.04 834.83
330.00 794.45
180.50 616.29
180.50 383.71
330.00 205.55
559.04 165.17
760.46 281.45
840.00 500.00
關於第二個錯誤( 使用vertcat
發生錯誤。要級聯的矩陣的尺寸不一致。 ):我不知道,您根本沒有在其中使用垂直級聯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.