我嘗試爲二維數組的前兩個維度分配值,同時保持第三維的固定。但我得到一個錯誤。在matlab中切片並賦值給3D陣列
Assignment has fewer non-singleton rhs dimensions than non-singleton subscripts
查看下面的代碼片段(請注意,我使用here的allcomb())。
任何想法爲什麼以及如何解決?
A = zeros(2, 94, 10);
combs = allcomb(1:2,1:94);
A(combs(:,1), combs(:,2), 1) = 1:(2*94);
請注意,我的意圖是寫的矢量形式:
A = zeros(2, 94, 10);
combs = allcomb(1:2,1:94)
vals = 1:(2*94);
for k=1:length(vals)
A(combs(k,1), combs(k,2), 1) = vals(k);
end
謝謝,但它不工作。 [val,val]是Nx2,而不是NxN。但是,無論如何,我只想分配N個值,因此將其複製到NxN分配過於昂貴。 – yuval
修復了一個錯字。梳子的尺寸是多少?從上下文來看,似乎94 * 94 x 2,在這種情況下,應該做些什麼。在任何情況下,如果你添加更多的上下文代碼,它會更容易幫助。 – crowdedComputeeer