Plotting the outcome of a 3D fit

5 ビュー (過去 30 日間)
Saeid
Saeid 2023 年 8 月 21 日
コメント済み: Saeid 2023 年 8 月 21 日
I have a set of data in the form [X Y Z] where X, Y and Z are column arrays. I can plot these data using scatter3. However, when I do the fit and then try to plot a surface of the fit with new Xf & Yf values in a range that is a bit beyond the original X & Y, I try this:
XYZFitCoefficinets=fit([X Y],Z,"poly22")
Xf=linspace(0,30,100)'; Yf=linspace(40,140,100)';
Zf=feval(XYZFitCoefficinets,[Xf, Yf])
I get another column array that just shows the calculated points, whereas I need a surface. I know that I need to use the surf function and turn Xf and Yf into mesh grids, but apparently it is not possible to use the feval with meshgridded X & Y. So what can i do?

採用された回答

Torsten
Torsten 2023 年 8 月 21 日
編集済み: Torsten 2023 年 8 月 21 日
x = 0:0.1:1;
y = -1:0.1:1;
[X,Y] = meshgrid(x,y);
Z = X.^2+Y.^2+0.1*(-1+2*rand(size(X)));
[Xout,Yout,Zout] = prepareSurfaceData(X,Y,Z);
S = fit([Xout,Yout],Zout,"poly22")
Linear model Poly22: S(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 Coefficients (with 95% confidence bounds): p00 = 0.01879 (-0.001415, 0.039) p10 = -0.02596 (-0.1119, 0.05996) p01 = -0.007346 (-0.02993, 0.01523) p20 = 1.018 (0.9357, 1.101) p11 = 0.009983 (-0.02819, 0.04815) p02 = 0.9853 (0.963, 1.008)
xq = 0:0.01:0.5;
yq = -1:0.01:0;
[Xq,Yq] = meshgrid(xq,yq);
S(Xq,Yq)
ans = 101×51
1.0115 1.0112 1.0112 1.0113 1.0117 1.0122 1.0130 1.0140 1.0151 1.0165 1.0181 1.0199 1.0218 1.0240 1.0264 1.0290 1.0318 1.0348 1.0380 1.0414 1.0450 1.0489 1.0529 1.0571 1.0615 1.0662 1.0710 1.0760 1.0813 1.0867 0.9918 0.9915 0.9915 0.9916 0.9920 0.9926 0.9933 0.9943 0.9955 0.9968 0.9984 1.0002 1.0022 1.0044 1.0067 1.0093 1.0121 1.0151 1.0184 1.0218 1.0254 1.0292 1.0332 1.0374 1.0419 1.0465 1.0513 1.0564 1.0616 1.0671 0.9723 0.9721 0.9720 0.9722 0.9725 0.9731 0.9738 0.9748 0.9760 0.9774 0.9789 0.9807 0.9827 0.9849 0.9873 0.9899 0.9927 0.9957 0.9989 1.0023 1.0059 1.0097 1.0138 1.0180 1.0224 1.0270 1.0319 1.0369 1.0422 1.0476 0.9530 0.9528 0.9527 0.9529 0.9532 0.9538 0.9546 0.9555 0.9567 0.9581 0.9597 0.9614 0.9634 0.9656 0.9680 0.9706 0.9734 0.9764 0.9796 0.9830 0.9866 0.9905 0.9945 0.9987 1.0031 1.0078 1.0126 1.0177 1.0229 1.0283 0.9339 0.9337 0.9336 0.9338 0.9341 0.9347 0.9355 0.9364 0.9376 0.9390 0.9406 0.9424 0.9443 0.9465 0.9489 0.9515 0.9543 0.9573 0.9605 0.9640 0.9676 0.9714 0.9754 0.9796 0.9841 0.9887 0.9935 0.9986 1.0038 1.0093 0.9150 0.9148 0.9147 0.9149 0.9153 0.9158 0.9166 0.9176 0.9187 0.9201 0.9217 0.9235 0.9255 0.9277 0.9300 0.9326 0.9355 0.9385 0.9417 0.9451 0.9487 0.9525 0.9565 0.9608 0.9652 0.9698 0.9747 0.9797 0.9850 0.9904 0.8964 0.8961 0.8961 0.8962 0.8966 0.8971 0.8979 0.8989 0.9000 0.9014 0.9030 0.9048 0.9068 0.9090 0.9114 0.9140 0.9168 0.9198 0.9230 0.9264 0.9300 0.9338 0.9379 0.9421 0.9465 0.9512 0.9560 0.9611 0.9663 0.9718 0.8779 0.8776 0.8776 0.8777 0.8781 0.8786 0.8794 0.8804 0.8816 0.8829 0.8845 0.8863 0.8883 0.8905 0.8929 0.8955 0.8983 0.9013 0.9045 0.9079 0.9115 0.9154 0.9194 0.9236 0.9281 0.9327 0.9375 0.9426 0.9478 0.9533 0.8595 0.8593 0.8593 0.8594 0.8598 0.8603 0.8611 0.8621 0.8633 0.8646 0.8662 0.8680 0.8700 0.8722 0.8746 0.8772 0.8800 0.8830 0.8862 0.8896 0.8933 0.8971 0.9011 0.9053 0.9098 0.9144 0.9193 0.9243 0.9296 0.9350 0.8414 0.8412 0.8412 0.8413 0.8417 0.8422 0.8430 0.8440 0.8452 0.8465 0.8481 0.8499 0.8519 0.8541 0.8565 0.8591 0.8619 0.8649 0.8681 0.8716 0.8752 0.8790 0.8830 0.8873 0.8917 0.8963 0.9012 0.9062 0.9115 0.9169
surf(Xq,Yq,S(Xq,Yq))
  1 件のコメント
Saeid
Saeid 2023 年 8 月 21 日
Thank you Torsten, that's exactly what I wanted!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSurface and Mesh Plots についてさらに検索

製品


リリース

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by