convert equation to matrix for 3d plot

2 次查看(过去 30 天)
Hello,
I am trying to represent this function in 3D as a surface, been doing some more experimenting here. I am having problems with turning my P_ave_output into a matrix. It is a bit of a complicated equation and I was hoping matlab had an easy command to do this for me. As I understand it, my R_l and C variables are matrices, and therefore the P_ave_output also needs to be a matrix. I am not quite sure how to do that. The end goal is again to represent a 3d surface plot relating the 3 matrices. Would you have any pointers for this?
I appreciate your help.
Thanks,
Shane
clear all
syms omega t R_l s A_in Y C
%Inputs
A_o = 3;
R_c = 40;
L_c = 0.051;
f=186;
omega_in = 2*pi*f;
A = A_o*sin(omega*t);
M=0.01;
%Theta from part a)
theta = 0.244;
%Spring coefficient (N/m)
k = 13660;
%Damping coefficient (N*s/m)
C_d = 0.07;
%Capacitance Assumption
%C=14*10^-6;
%Impedance equations
Z1 = R_c+R_l+L_c*s+1/(s*C);
Z2 = C_d+k/s+M*s;
%From part a) transfer function
%Output voltage V_l
V_l = (theta*(Y*s)*R_l)/Z1;
%Input excitation force Z_in
A_in=(Y*s*Z2+theta*V_l/R_l)/(M);
%output voltage ratio to input force
Transfer_func = simplify(V_l/A_in);
Transfer_func(s) = vpa(simplify(V_l/A_in),5);
Transfer_func(omega) = subs(Transfer_func, {s},{1j*omega});
amplitude_TF = A_o*abs(Transfer_func(omega_in));
angle_TF = angle(Transfer_func(omega_in));
V_l_steady_state = amplitude_TF*(sin(omega_in*t+angle_TF));
P_ave_output = (amplitude_TF/(sqrt(2)))^2/R_l;
P_ave_diff = diff(P_ave_output);
P_ave_diff = simplify(P_ave_diff, 'Steps',500);
P_ave_max = P_ave_diff == 0;
%R_l_optimal = vpa(abs((solve(P_ave_max, R_l))),3)
%fplot(P_ave_output,[10 200])
%xticks([10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200])
%xline(72.3)
%ylabel('Average Power (Watts)')
%xlabel('Load Resistance R_l (Ohms)')
%Plotmax = vpa(subs(P_ave_output,{R_l},{R_l_optimal}),8)
R_l= [10:10:200];
C=[2:2:20];
ZZ=P_ave_output
surf(R_l,C,ZZ)
  4 个评论
Star Strider
Star Strider 2020-6-11
In order for the surf call to work, ‘Y’ needs to be defined (or removed). (It’s quadratic in ‘A_in’, so it doesn’t cancel in ‘Transfer_func’.)
It would then be straightforward to calculate ‘ZZ’, and produce the plot.
Shane Palmer
Shane Palmer 2020-6-12
Okay, thank you for the clarification. I'll see if I can include that information in a better way.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by