为什么这个 Matlab 代码的情节是空的?
Why is the plot coming out empty for this Matlab code?
代码
clear;clc
T=800;
Pc=48.45;
Tc=375;
w=0.153;
R=82.06;
a=((0.45724)*(R^2)*(Tc^2))/Pc;
b=((0.07780)*R*Tc)/Pc;
B=(0.37464+(1.54226*w)-(0.26992*(w^2)));
Tr=T/Tc;
s=(1+(B*(1-sqrt(Tr))))^2;
for Vm=90:5:1000
P=((R*T)/(Vm-b))-((a*s)/((Vm)^2+(2*b*Vm)-b^2));
end
plot(Vm, P)
问题
每次我 运行 这段代码,它都会出现一个完全空的图,两个轴上只有数字,如下图所示。我检查了我的代码几次,但我仍然找不到问题,特别是因为代码 运行s 没有错误。我应该在这个图上得到的结果是 P 的行为随着 Vm 值的增加。
The result of the code
关于问题来源的补充信息
如果您有兴趣(练习 1),这是原始问题。
The original question (Exercise 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
由于以上是对标量值的处理,所以使用 .*
或 *
...
并不重要
代码
clear;clc
T=800;
Pc=48.45;
Tc=375;
w=0.153;
R=82.06;
a=((0.45724)*(R^2)*(Tc^2))/Pc;
b=((0.07780)*R*Tc)/Pc;
B=(0.37464+(1.54226*w)-(0.26992*(w^2)));
Tr=T/Tc;
s=(1+(B*(1-sqrt(Tr))))^2;
for Vm=90:5:1000
P=((R*T)/(Vm-b))-((a*s)/((Vm)^2+(2*b*Vm)-b^2));
end
plot(Vm, P)
问题
每次我 运行 这段代码,它都会出现一个完全空的图,两个轴上只有数字,如下图所示。我检查了我的代码几次,但我仍然找不到问题,特别是因为代码 运行s 没有错误。我应该在这个图上得到的结果是 P 的行为随着 Vm 值的增加。
The result of the code
关于问题来源的补充信息
如果您有兴趣(练习 1),这是原始问题。
The original question (Exercise 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
由于以上是对标量值的处理,所以使用 .*
或 *
...