在 Matlab 中绘制公式时矩阵维数不一致
Matrix dimensions do not agree when plotting a formula in Matlab
我正在尝试在 matlab 中绘制卫星轨道。这是问题和公式:
到目前为止,这是我的代码。
clear;
clc;
a = linspace(0,2 .* pi,360);
p = 1000;
e1 = ([0 .25 .50]);
r1 = (p) ./ (1 - (e1 .* (cos(a))));
它产生这个错误:
Matrix dimensions must agree.
Error in hw5 (line 8)
当使用.*
、./
或.^
时,两边的尺寸必须相同。在您的代码中 e1
和 cos(a)
大小不同。如果你想计算不同偏心率的卫星距离,你可以使用for循环:
clear; clc; close all;
a = linspace(0,2 .* pi,360);
p = 1000;
e1 = [0 .25 .50];
for e=e1
r1 = (p) ./ (1 - (e .* cos(a)));
polarplot(a, r1), hold on
end
如果不想使用循环,也可以使用 bsxfun:
clear; clc; close all;
a = linspace(0,2 .* pi,360);
p = 1000;
e1 = [0 .25 .50];
denominator = bsxfun(@(e, a) 1 - (e .* cos(a)), e1', a);
r1 = bsxfun(@rdivide, p, denominator);
polarplot(repmat(a', 1, 3), r1')
我正在尝试在 matlab 中绘制卫星轨道。这是问题和公式:
到目前为止,这是我的代码。
clear;
clc;
a = linspace(0,2 .* pi,360);
p = 1000;
e1 = ([0 .25 .50]);
r1 = (p) ./ (1 - (e1 .* (cos(a))));
它产生这个错误:
Matrix dimensions must agree.
Error in hw5 (line 8)
当使用.*
、./
或.^
时,两边的尺寸必须相同。在您的代码中 e1
和 cos(a)
大小不同。如果你想计算不同偏心率的卫星距离,你可以使用for循环:
clear; clc; close all;
a = linspace(0,2 .* pi,360);
p = 1000;
e1 = [0 .25 .50];
for e=e1
r1 = (p) ./ (1 - (e .* cos(a)));
polarplot(a, r1), hold on
end
如果不想使用循环,也可以使用 bsxfun:
clear; clc; close all;
a = linspace(0,2 .* pi,360);
p = 1000;
e1 = [0 .25 .50];
denominator = bsxfun(@(e, a) 1 - (e .* cos(a)), e1', a);
r1 = bsxfun(@rdivide, p, denominator);
polarplot(repmat(a', 1, 3), r1')