Matlab三角函数



我对Matlab相当陌生。我用C++编写了一个代码来计算三角形底边相对于α角的长度,该代码的工作原理与预期一致。现在我想在Matlab中完成同样的任务并绘制结果。

C++代码

#include <iostream>
using namespace std;
#include <tgmath.h> 
int a = 135; 
int b = 125;
double base;
double alphaB;
double alphaC;
double alphaA;
float difference;
#define PI 3.14159265358979323846
int main() {
for(int i = 1; i < 90; i++){
alphaA = i * PI/180;
alphaB = asin((b*sin(alphaA))/a);
alphaC = 180*PI/180 - alphaA - alphaB;
base = (a*sin(alphaC))/(sin(alphaA));
cout << base << endl;
}
return 0;
}

Matlab脚本

y = 0:1:90;
z = my(y);
plot(z,y)
function base = my(x)
a = 135; %Side A lenght
b = 125; %Side B lenght
f = x * pi/180;
alphaB = asin((b*sin(f))/a);
alphaC = 180*pi/180 - f - alphaB;
base   = (a*sin(alphaC))/(sin(f));
disp(base);
end

当我运行Matlab脚本时,输出只是一个数字,而绘图是空的,所以我写了另一个调试脚本,将"(a*sin(alpha((/(sin(f(("方程剥离成

y = 1:1:5;
z = my(y);
plot(z,y)
function base = my(x)
a = 135; %Side A lenght
b = 125; %Side B lenght
f = x * pi/180;
alphaB = asin((b*sin(f))/a);
alphaC = 180*pi/180 - f - alphaB;
alphaC2 = sin(alphaC);
sf = sin(f);
aa = a*alphaC2;
test = aa/sf;  % division problem
base   = aa;
disp(test);
disp(aa);
disp(sf);
end

事实证明,当涉及到除法时,当显示"aa,sf"时,我得到了所有的输出,90个数字。当脚本点击"test=aa/SF"时,我只有一个输出(一个数字(。如何克服这个问题?

您想要使用。/而不是/

/是矩阵除法./是每个元素的除法。

相关内容

  • 没有找到相关文章

最新更新