How can I extract a profile from a surface?

22 ビュー (過去 30 日間)
Leonardo Colavitti
Leonardo Colavitti 2017 年 2 月 1 日
コメント済み: Leonardo Colavitti 2017 年 2 月 23 日
Hello everybody, I would like to extract a profile from a surface. My initial matrix is composed by a matrix (18011*3) of Longitude, Latitude and Depth values. Specifically, I'd like a function that in input takes the position of start (A) and end of my profile (B) (xa,ya,xb,yb) and in output return the position of the corresponding z in A and B {e.g. [A,B] = myfunc(xa,ya,xb,yb)}. I am new in matlab and now very desperated ... Someone can help me, please?
Leonardo

回答 (2 件)

Iddo Weiner
Iddo Weiner 2017 年 2 月 1 日
Hi Leonardo, I hope I understood your question properly... Here's my suggestion (I worked with small made-up data):
data = rand([5,5,5]);
xA = 2; xB = 4; yA = 5; yB = 5;
zA = data(xA,yA,:); zB = data(xB,yB,:);
% initiate new arrays and use a loop to lower the dimensions:
low_zA = nan(length(zA),1);
for i = 1:(length(low_zA))
low_zA(i) = zA(1,1,i);
end
low_zB = nan(length(zB),1);
for i = 1:(length(low_zB))
low_zB(i) = zB(1,1,i);
end
% now if you want to draw each of the profiles:
plot(low_zA,'r-p')
hold on
plot(low_zB,'k--*')
ylabel('Z axis value')
legend('zA','zB')
Notice that I have some code duplication here. I'd generalize this example into a function before starting to work with it.
Hope this helps,
Iddo
  1 件のコメント
Leonardo Colavitti
Leonardo Colavitti 2017 年 2 月 2 日
Hello Iddo, thank you very much for your answer but I would like something of little different. I have an initial matrix which constitutes a curve (which easily I plot with plot3, mesh and surf). My goal is to write a function that in input has two values in space (xa,ya) and (xb,yb) while in output I would like to see a profile between x values and z(depth) that represents the interception between the curve and the plane y=0... I hope you can help me, anyway Thank you again!

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


Walter Roberson
Walter Roberson 2017 年 2 月 1 日
https://www.mathworks.com/help/images/ref/improfile.html has it already built in (Image Processing Toolbox)
  1 件のコメント
Leonardo Colavitti
Leonardo Colavitti 2017 年 2 月 23 日
Thanks for your answer, but it is not exactly what I am looking for. My function is defined by points and I think that 'improfile' evaluates the values of pixels (intensity) along a line in grey scale or RGB colors. Do you have any other idea?

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by