首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab三角函数

Matlab三角函数
EN

Stack Overflow用户
提问于 2018-12-11 15:52:09
回答 1查看 128关注 0票数 1

我对Matlab相当陌生。我在C++中编写了一个代码来计算三角形底部相对于alpha角的长度,代码按预期工作。现在,我想完成同样的任务,在Matlab和绘图的结果。

C++代码

代码语言:javascript
复制
        #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脚本

代码语言:javascript
复制
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))“方程。

代码语言:javascript
复制
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“时,我只有一个输出(一个数字)。如何克服这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-11 15:54:42

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53727766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档