3D折线图专注于展示三维空间中曲线的分布情况,其核心函数为MATLAB中的plot3。与二维折线绘制中常用的plot函数相比,plot3函数的主要区别在于需要设定x、y、z三个方向上的坐标向量。在绘图属性方面,两者则保持高度一致。与3D折线图相似的,还有用于绘制3D散点图的scatter3函数以及3D杆状图的stem3函数等。
代码:
clc; clear; close all;
%----------------------
m = 15; % Series
N = 512; % Period
T0 = 4;
T = 2;
t1 = linspace(-T/2, T/2, N);
t2 = linspace(T/2, T0-T/2, N);
t = [(t1-T0)'; (t2-T0)'; t1'; t2'; (t1+T0)'];
%----------------------
% Construct periodic signals
%----------------------
% s = zeros(5*N,1);
% s(1:N)=1; s(2*N+1:3*N)=1; s(4*N+1:5*N)=1;
s = [ones(N,1);zeros(N,1);ones(N,1);zeros(N,1);ones(N,1)]';
y = zeros(m+1, length(s));
y(m+1,:) = s-0.5;
plot3(t-(t+2), t, y(m+1,:),'LineWidth',2); % Period square wave
hold on;
axis([-2,m+1,-T0-1,T0+1,-1,2])
set(gca,'XTick',-T0-1:2:m);
set(gca,'YTick',-T0-1:1:T0+1);
set(gca,'ZTick',-1:0.5:T0);
title('Fourier series expansion','FontSize',15);
grid on;
view(-49,23)
fsamp = 1028;
f = linspace(1, m+1, fsamp);
A = 0.5; % Coefficient
freq = 1:1:m;
plot3(f,T0+f-f+1,A*sinc(A*f)*5,'LineWidth',3)
mag = A*sinc(A*freq)*5;
h=stem3(freq,T0+freq-freq+1,mag,'filled','LineWidth',3);
set(h,'Marker','o',...
'MarkerFaceColor','g')
x = A*ones(size(t));% Harmonic signals
X = A*ones(size(t));% Synthesis signals
for k = 1:m
x = 2*A*sinc(A*k)*cos(2*pi*t*k/T0);
X = X+2*A*sinc(A*k)*cos(2*pi*t*k/T0);
y(k, :) = x;
plot3(k+t-t, t, y(k,:),'LineWidth',1.5); % Harmonic
end
plot3(k+1+t-t, t, X-0.5,'LineWidth',2);
grid on;
xlabel('Frequency view','Rotation', 15);
ylabel('Time duration','Rotation', -10);
zlabel('Amplitude/Magnitude');
set(gcf,'Color','White'); % Background is white