在 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)

当使用.*./.^时,两边的尺寸必须相同。在您的代码中 e1cos(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')