一.绕x轴旋转
将函数加到f = @(x)后面即可:
% 定义函数
clear
clc
f = @(x) sin(2*pi*x) .* exp(-0.1*x.^2) + 0.5*cos(3*pi*x) + 0.2*sin(5*pi*x).^2;
% 生成 x 和 theta 值
x_values = linspace(-2, 2, 1000); %范围-2到2
theta = linspace(0, 2*pi, 1000);
% 创建网格
[X, Theta] = meshgrid(x_values, theta);
% 计算对应的 y 值
Y = f(X);
% 将坐标系转换为极坐标系
X_rotated = X;
Y_rotated = Y .* cos(Theta);
Z_rotated = Y .* sin(Theta);
% 绘制三维图形
figure;
surf(X_rotated, Y_rotated, Z_rotated, 'EdgeColor', 'none');
xlabel('X');
ylabel('Y');
zlabel('Z');
% 添加网格和颜色映射
grid on;
colormap('parula');
二、绕y轴旋转
将代码修改为绕y轴旋转,只需调整坐标系的转换部分。以下是修改后的代码
% 定义函数
clear
clc
f = @(x) sin(2*pi*x) .* exp(-0.1*x.^2) + 0.5*cos(3*pi*x) + 0.2*sin(5*pi*x).^2;
% 生成 x 和 theta 值
x_values = linspace(0, 2*pi, 1000);
theta = linspace(0, 2*pi, 1000);
% 创建网格
[X, Theta] = meshgrid(x_values, theta);
% 计算对应的 y 值
Y = f(X);
% 将坐标系转换为极坐标系,这里修改为绕y轴旋转
X_rotated = Y .* cos(Theta);
Y_rotated = X;
Z_rotated = Y .* sin(Theta);
% 绘制三维图形
figure;
surf(X_rotated, Y_rotated, Z_rotated, 'EdgeColor', 'none');
xlabel('X');
ylabel('Y');
zlabel('Z');
% 添加网格和颜色映射
grid on;
colormap('parula');
最后:
如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!