Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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代码的情节是空的?_Matlab_Plot_Matlab Figure - Fatal编程技术网

为什么这个Matlab代码的情节是空的?

为什么这个Matlab代码的情节是空的?,matlab,plot,matlab-figure,Matlab,Plot,Matlab Figure,代码 问题 每次我运行这段代码时,都会得到一个完全空的绘图,两个轴上都只有数字,如下图所示。我已经检查了我的代码几次,但仍然找不到问题,特别是因为代码运行时没有错误。我在这张图上得到的结果是,随着Vm值的增加,P的行为 关于问题来源的其他信息 如果你对练习1感兴趣,这里是原始问题 尝试显示您的变量。您将看到Vm不是一个数组,而是一个单值标量。当您在Vm上循环时,它一次只取一个值;它不构建数组 MATLAB可以一次对多个值进行计算,所以如果将Vm定义为一个数组并丢弃循环,我猜它会起作用 尝试类似这

代码

问题

每次我运行这段代码时,都会得到一个完全空的绘图,两个轴上都只有数字,如下图所示。我已经检查了我的代码几次,但仍然找不到问题,特别是因为代码运行时没有错误。我在这张图上得到的结果是,随着Vm值的增加,P的行为

关于问题来源的其他信息

如果你对练习1感兴趣,这里是原始问题


尝试显示您的变量。您将看到Vm不是一个数组,而是一个单值标量。当您在Vm上循环时,它一次只取一个值;它不构建数组

MATLAB可以一次对多个值进行计算,所以如果将Vm定义为一个数组并丢弃循环,我猜它会起作用

尝试类似这样的操作,用以下行替换for循环:

Vm = 90:5:1000
P=((R*T)./(Vm-b))-((a*s)./((Vm).^2+(2*b.*Vm)-b^2));
p将是一个数组。请注意,在与数组Vm相乘时,我们使用了.*而不是*,因为我们希望进行元素相乘,而不是矩阵相乘。同样,我们使用./而不是/和。^而不是^

编辑:如果需要使用for循环,则可以将p和Vm都定义为数组,然后分别处理循环中的每个元素:

Vm = 90:5:1000;
P = NaN(size(Vm));
for i=1:numel(Vm)
    P(i)=((R*T)./(Vm(i)-b))-((a*s)./((Vm(i)).^2+(2*b.*Vm(i))-b^2));
end

因为上面是关于标量值的,所以不管你是否使用。*或*..

我试过了,但我仍然得到了相同的空图。嗯,好吧,刚刚登录到我的MATLAB机器并试用了一下,它对我来说很好,我得到了一个看起来有点像指数衰减的好图?再试一次?为了清楚起见,将for循环替换为这两行。你没有做for循环。哦,对不起,我重读了你的答案,注意到你说要消除for循环。它可以在没有for循环的情况下工作,没有问题,但是,在最初的问题上,我需要在代码中使用for循环。你认为有没有办法通过使用for循环来解决这个问题?坚持使用for循环似乎有点愚蠢告诉你的老师为了获得额外的学分。。。但你可以做到:Vm=90:5:1000;P=NaNsizeVm;对于i=1:numelVm;Pi=R*T./Vmi-b-a*s./Vmi.^2+2*b.*Vmi-b^2;终止plotVm,P@Justin你应该把它编辑成你的答案。是的,这是愚蠢的,但是很多老师认为强迫学生在不必要的情况下使用for循环有利于学习语言,这是错误的。
Vm = 90:5:1000;
P = NaN(size(Vm));
for i=1:numel(Vm)
    P(i)=((R*T)./(Vm(i)-b))-((a*s)./((Vm(i)).^2+(2*b.*Vm(i))-b^2));
end