簡體   English   中英

Matlab三角函數

[英]Matlab trigonometric functions

我是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”時,我有單輸出(一個數字)。 如何克服這個問題?

您可能希望使用./而不是/

/是矩陣除法./是每個元素的一個除法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM