How to use array data for successive operations

2 ビュー (過去 30 日間)
laura bagnale
laura bagnale 2021 年 7 月 22 日
回答済み: laura bagnale 2021 年 7 月 27 日
Hello everyone,
I hope someone could help me.
I used the 'normalize' function for a set of data and then I used fitsurface to interpolate them with e surface in space. This is the code:
A = [4.6; 9.3; 13.9; 18.6; 23.5; 28.5];
X = normalize(A,'range');
B = [10; 20; 30; 40; 50; 60];
Y = normalize(B,'range');
C = [3.06; 2.56; 2.51; 2.54; 1.6; 1.9];
Z = normalize(C,'range');
plot3(X,Y,Z,'or');
fs=fit([X,Y],Z, 'poly22')
plot(fs, [X,Y],Z)
I would like to normalize each element of the three arrays through this following function:
xinorm = (xi - xmin)/ (xmax - xmin)
HOw can I call each individual element in the expression to obtain a new array with normalized elements?
For example:
one single normalized element of array A should be x2norm = (9.3 - 4.6)/(28.5 - 4.6). I would like to do this for all elements and obtain the vector with all normalized values, in the end to plot them and use fitsurface again.
Thank you very much for your help.
Regards,
Laura

採用された回答

Pavan Guntha
Pavan Guntha 2021 年 7 月 27 日
Hi Laura,
You could leverage vectorization techniques to solve the problem. Have a look at the following code:
A = [4.6; 9.3; 13.9; 18.6; 23.5; 28.5];
xiNorm = norm_func(A);
B = [10; 20; 30; 40; 50; 60];
yiNorm = norm_func(B);
C = [3.06; 2.56; 2.51; 2.54; 1.6; 1.9];
ziNorm = norm_func(C);
plot3(xiNorm,yiNorm,ziNorm,'or');
fs=fit([xiNorm,yiNorm],ziNorm, 'poly22')
plot(fs, [xiNorm,yiNorm],ziNorm)
function arrOut = norm_func(A)
minA = min(A);
maxA = max(A);
arrOut = (A - minA)./(maxA - minA);
end
Hope this helps!

その他の回答 (1 件)

laura bagnale
laura bagnale 2021 年 7 月 27 日
Hi Pavan,
thank you very much for your support! This helps a lot!
Best Regards,
Laura

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by