2016-06-06 4 views
0

mesh()로 작성된 표면을 따라가는 3 차원 플롯에 참조 선을 추가하고 싶습니다. 나는 x 축과 y 축에서 3 점을 만들어 선을 구성하므로 z 축 좌표를 찾기 위해 보간을해야합니다.MATLAB : 3D 플롯에 선 추가

acceleration_dB = [0 109.3699 118.0084 133.9584 104.3017 110.5423 120.6332 140.6567 144.4194 129.7292]'; 
frequency = [1 50 50 50 100 100 100 100 100 500]'; 
voltage = [ 1.0e-04 * 0.0001 0.0968 0.1645 0.2983 0.0278 0.0368 0.0893 0.2785 0.4928 0.0780 ]'; 
xlin=linspace(0, max(frequency),33); 
ylin=linspace(min(acceleration_dB), max(acceleration_dB),33); 
[X, Y] = meshgrid(xlin,ylin); 
f = scatteredInterpolant(frequency,acceleration_dB,log(voltage)); 
Z=f(X,Y); 
figure(); 
mesh(X,Y,Z); 
hold on 

% Add threshold reference line 
threshAccel = [97.0870 104.4212 109.5787] 
threshFreq = [50 100 500] 
Zthresh=f(threshFreq,threshAccel); 
plot3(threshFreq,threshAccel,Zthresh,'Color','black','LineWidth',1) 

제공 : 내가 좋아하는 것이 무엇

3dplot

는 전체 길이 표면의 평면을 다음과 검은 색 라인 여기에 지금까지 (재현 데이터) 내 코드입니다 x 축.

모든 조언을 주시면 감사하겠습니다. 고맙습니다!

+0

이 줄을 만들어야하는 좌표는 x 축과 y 축에서 [10, 97.0870] [100, 104.4212] [500, 109.5787]입니다. 이 선을 주파수 축 (0 - 500)의 최소 한도에서 벗어나고 3D 표면의 릴리프를 따르기 위해 확장하고 싶습니다. – user3406207

+0

'threshAccel'과'threshFreq'에 포인트를 더 추가하려고 했습니까? – shamalaia

+0

네, 그렇게해야 할 것 같습니다. 즉, 'threshAccel'과'threshFreq'에 더 많은 포인트를 추가하고 z 평면에서 해당 좌표를 얻으십시오. (실제로 그 라인은 메시 위에'떠 다니는 '것이 아닙니다. 하지만 어떻게 해야할지 모르겠다. 어떤 종류의 3D 보간? – user3406207

답변

1

내가 생각하는 범위의 문제 일뿐입니다. 이 꽤 잘 작동하는 것 같다 :

threshAccel = [97 97.0870 104.4212 109.5787] 
    threshFreq = [0 50 100 500] 

하지만 난 970가 정확한 값입니다 그것에 대해 확실하지 않다. 아마 수정해야합니다.