问题描述
我正在尝试在matlab中绘制卫星轨道。这是问题和公式:
到目前为止,这是我的代码。
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)
解决方法
使用.*
,./
或.^
时,双方的尺寸必须相同。在您的代码中,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,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')