我有一個離散資料集,X=[x1,x2,..,x12] & Y=[y1,y2,...,y12]. X 范圍從 [-25, 0] 和 Y 范圍從 [1e-6, 1e0]。X 不會均勻增加 - 隨著 x 值接近 0,資料采樣密度從 2.5 的增量增加到 1 的增量。每個 x 值都是以 cm 為單位的。我無法通過擬合函式來很好地擬合資料(我已經嘗試了很多次)。我只剩下離散資料。我的需要是圍繞 Z 軸完全掃描 X、Y 資料,并將生成的掃描資料值放入大小為 (51, 51) 的矩陣 Z 中。我嘗試使用圓柱函式,[u,v,w] = cylinder(Y)認為我可以從 [u, v, w] 中提取資料或創建矩陣 Z。我似乎無法解決這個問題。surf(u,v,w)情節幾乎正確 - (u, v) 軸上的縮放范圍為 [-1, 1] 而不是 [-25, 25]。這是,我假設,因為我正在使用cylinder(Y). 當我嘗試時,[u,v,w] = cylinder(X,Y)我得到,error: linspace: N must be a scalar。似乎應該有更好的方法,然后我使用圓柱體來獲取 X 和 Y 資料,在點之間進行插值(在資料不存在的地方填充 Z),旋轉它,然后將結果放入矩陣 Z 中。任何歡迎提出建議。我正在使用 Octave 6.3.0。先感謝您。
uj5u.com熱心網友回復:
創建一個包含距原點值距離的矩陣 R。使用 for 回圈和單值插值來覆寫 R 空間。將內插值放入矩陣 Z 中。
% Original data X = [-25,-22.5,...,0]; size(X) = 1 12
% Original data Y = [1e-6, 1.3e-6,...,1] size(Y) = 1 12
u = [-range(X):1:range(X)]; v = [-range(X):1:range(X)]';
R = -sqrt(u.^2. v.^2);
Z = zeros( 2 .* range(X) 1);
for i = 1:size(R,1)
for j = 1:size(R,2)
if R(i,j) < min(X); Z(i,j) = 0; endif
if R(i,j) >= min(X); Z(i,j) = interp1(X,Y,R(i,j)); endif
endfor
endfor
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/393318.html
上一篇:唯一的一對單元格,其中順序不重要
下一篇:小圓圈的交集?
