正如標題所說,我試圖將網格函數的兩個變量切片(例如.jpg)作爲子圖保存。我想用.m文件來做這件事,因爲我有很多要生成的圖。我已經想出瞭如何在自己的數字上繪製觀點,但是我無法讓他們在一個數字中作爲子圖進行適當的繪製。爲了說明我的意思:MATLAB:在子圖中繪製/保存網格函數的X-Y視圖
這裏有個別地塊的產出:
3D網格:3D MATLAB mesh plot
XY視圖:XY MATLAB mesh view
YZ視圖:YZ MATLAB mesh view
XZ視圖:XZ MATLAB mesh view
這裏是我的密碼(不工作):
%Ambiguity Surface
fid = figure(fnum);
axes1 = axes('Parent',fid);
view(axes1,[-62.5 28]);
grid(axes1,'on');
hold(axes1,'all');
msh = mesh(taux,fdy,z,'Parent',axes1);
xlabel ('Delay - seconds');
ylabel ('Doppler - Hz');
zlabel ('Ambiguity function (Normalized Magnitude-Squared)');
fname = strcat(name,' (Ambiguity Function z(\tau;F_d))');
title(fname);
cb = colorbar('peer',axes1);
set(get(cb,'ylabel'),'String','Magnitude-Squared (dB)');
hold off;
printFig(fid,fnum,sname)
fnum = fnum + 1;
%Ambiguity Slices
fid = figure(fnum);
hold all;
subplot(2,1,1);
axes1 = axes();
grid(axes1,'on');
view(axes1,[90 0]);
msh = mesh(taux,fdy,z);
xlabel ('Delay - seconds','Visible','off');
ylabel ('Doppler - Hz');
zlabel ('Ambiguity function (Normalized Magnitude-Squared)','Visible','off');
fname = strcat(name,' (Ambiguity Function Slice z(\tau;F_d) @ \tau = 128)');
title(fname)
subplot(2,1,2);
axes2 = axes();
grid(axes2,'on');
view(axes2,[0 0]);
msh = mesh(taux,fdy,z);
xlabel ('Delay - seconds','Visible','off');
ylabel ('Doppler - Hz','Visible','off');
zlabel ('Ambiguity function (Normalized Magnitude-Squared)','Visible','off');
cb = colorbar('peer',axes2);
set(get(cb,'ylabel'),'String','Magnitude-Squared');
fname = strcat(name,' (Ambiguity Function Slice z(\tau;F_d) @ F_d = 0)');
title(fname)
hold off;
printFig(fid,fnum,slname)
fnum = fnum+1;
printFig()只是設置了目錄信息,並執行print
命令。
我的代碼設置了兩個子圖,然後覆蓋了網格圖的完整三維視圖,這不是我想要的。我想在一個數字上看到兩個觀點(XZ和YZ)。
感謝您的幫助!
-Dylan
編輯: 每@ Andrew_L的建議,我修改了這個在我的代碼:
sp1 = subplot(2,1,1);
axes(sp1);
axes1 = axes();
grid(axes1,'on');
view(axes1,[90 0]);
msh = mesh(taux,fdy,z,'Parent',axes1);
這是重複其他次要情節。但結果仍然相同。它似乎正確地設置了兩個空白的子圖,然後在其上顯示完整的僞3D圖。
我已經試過了,當我這樣做,這是我的錯誤: ???使用==>軸出錯 輸出參數太多。 錯誤==> plotSurfaces at 51 axes1 = axes(sp1); – Dylan
我剛剛嘗試將軸設置爲子圖:'axes(sp1)',然後輸入'axes1 = axes()'以獲取值。這樣做會在繪圖上正確設置座標軸(對於兩個子圖),但是它會與僞3d圖疊加,而不是所需的視圖。 – Dylan
我修改了上面的答案以獲得可行的解決方案。我改變了子圖的大小,以使用''Position''屬性爲全局色條留出空間,然後使用'axes()'命令創建的較大軸設置一個色條。如果您使用兩個單獨的顏色條(每個顏色條對應一個顏色條),代碼可以大大簡化。 (上面的代碼繪製了一個大的彩條,但需要更多的工作才能使比例精確)。 –