gpt4 book ai didi

c++ - Matlab三角函数

转载 作者:行者123 更新时间:2023-11-30 02:17:20 27 4
gpt4 key购买 nike

我是 Matlab 的新手。我用 C++ 编写了一段代码来计算三角形底边相对于 alpha 角的长度,该代码按预期工作。现在我想在 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”时,我只有一个输出(一个数字)。如何克服这个问题?

最佳答案

你会想要使用 ./而不是/

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

关于c++ - Matlab三角函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53727766/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com