在Matlab中绘制公式时矩阵尺寸不一致

问题描述

我正在尝试在matlab中绘制卫星轨道。这是问题和公式:

This is the question and formula

到目前为止,这是我的代码

clear;
clc;

a = linspace(0,2 .* pi,360);
p = 1000;
e1 = ([0 .25 .50]);

r1 = (p) ./ (1 - (e1 .* (cos(a))));    

它会产生此错误

矩阵尺寸必须一致。

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,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')