Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab freemat弹丸运动问题_Matlab_Plot - Fatal编程技术网

Matlab freemat弹丸运动问题

Matlab freemat弹丸运动问题,matlab,plot,Matlab,Plot,我正在为freemat编写一个代码,用于计算和绘制球形物体的抛射运动,其中包括四个不同的阻力系数值。直到最后一部分,一切都很好,我需要有多个情节。距离与高度的曲线图运行良好,但当我尝试绘制其他曲线图时,出现了问题。我想我很难定义正确的变量和数组来绘制图。我需要绘制的其他变量是每个阻力系数的最大y和最大z,以及每个阻力系数的最大时间。我想为每个图形单独设置一个绘图,而不是使用子绘图 以下是我所拥有的: % Clear screen and variables clear clc % Init

我正在为freemat编写一个代码,用于计算和绘制球形物体的抛射运动,其中包括四个不同的阻力系数值。直到最后一部分,一切都很好,我需要有多个情节。距离与高度的曲线图运行良好,但当我尝试绘制其他曲线图时,出现了问题。我想我很难定义正确的变量和数组来绘制图。我需要绘制的其他变量是每个阻力系数的最大y和最大z,以及每个阻力系数的最大时间。我想为每个图形单独设置一个绘图,而不是使用子绘图

以下是我所拥有的:

% Clear screen and variables

clear

clc

% Initial variables

x0=0; %Initial x position

y0=0; %Initial y position

v0=50; %Initial velocity

theta=30; %Degrees

A=0.0042; %Silhouette area of a sphere

dt=0.001; %Change in time  

g=9.81; %Gravity

rho=1.2; %Density of air, used in calculating drag

m=.145; %Mass of object

C=[0,.2,.5,1.2]; %Drag coefficients 

N=length(C); %

%Arrays to hold values used in the program

x=[];

y=[];

t=[];

vx=[];

vy=[];

ax=[];

ay=[];

MaxH=[];

MaxX=[];

%Assigning variables and equations to be used in the calculations

for j=1:N;

    Dm=rho*C(j)*A/2/m; 

    t(j,1)=0;

    x(j,1)=0;

    y(j,1)=0;

    vx(j,1)=v0*cosd(theta);

    vy(j,1)=v0*sind(theta);

    ax(j,1)=Acceleration( vx(j,1), v0, Dm, 0);

    ay(j,1)=Acceleration( vy(j,1), v0, Dm, -g);

    h=1;

    i=1;

    %Loop to calculate velocity, position, and acceleration

    while (h>0.0001 && i<6000);

        v=sqrt(vx(j,1)^2 + vy(j,1)^2);  %Calculation for velocity

        vx(j,i+1)= vx(j,i) + ax(j,i)*dt; %

        vy(j,i+1)= vy(j,i) + ay(j,i)*dt;

        x(j,i+1)= x(j,i) + vx(j,i)*dt + 0.5*ax(j,i)*dt^2;

        y(j,i+1)= y(j,i) + vy(j,i)*dt + 0.5*ay(j,i)*dt^2;

        ax(j,i+1)= Acceleration(vx(j,i) , v , Dm , 0);

        ay(j,i+1)= Acceleration(vy(j,i) , v , Dm , -g);

        h= y(j,i+1);

        t(j,i+1)= t(j,i) + dt;

        i=i+1;

        end

    %Display for the number of iterations at each Drag value

    nodes(j)=i;

    printf('Drag: %1.1f      Iteration:  %d\n',C(j),i);

end

%Graphs

hold on
for k=1:N

    plot(x(k,1:nodes(k)),y(k,1:nodes(k)))

    title('Distance vs. Height')

    xlabel('Distance in meters')

    ylabel('Height in meters')


    sizefig(1000,800);
end

hold off

print 'xy.jpeg'

看起来你在创造一个情节?你的问题是不能打开一个新的图形窗口吗?我正在尝试创建三个“绘图”。一个包含x对y轨迹,一个包含x、y、vx和vy对时间的4个子批次,第三个包含3个子批次max(x)、max(y)和time对drag。我不知道如何打开单独的地物窗口,也无法计算出绘制max(x)、max(y)和阻力值所需的变量。请使用
figure
打开新的地物窗口。
function result=Acceleration(Vc,v,Dm,a0);

    result= a0-Dm*Vc*v;