1

3 つの変数 x、y、z を使用してサーフェスをプロットする必要があります。これらは 3 つの関節角度 q1、q2、q3 の関数です。しかし、これをプロットする方法がわかりません。

for q1=-170:5:170
    for q2=-65:5:140
        for q3=-180:5:70
            c1 = cosd (q1);
            c2 = cosd (q2);
            c3 = cosd (q3);
            s1 = sind (q1);
            s2 = sind (q2);
            s3 = sind (q3);
            x =(320*c1)-(975*c1*s2)-(200*c1*c2*s3)-(200*c1*c3*s2);
            y =(320*s1)-(975*s1*s2)-(200*c2*s1*s3)-(200*c3*s1*s2);
            z = (975*c2)+(200*c2*c3)-(200*s2*s3)+680;
        end
    end
end
4

1 に答える 1

2

考慮しなければならない点がいくつかあります。

  1. forループは必要ありません
  2. 係数ベクトルは同じ長さである必要があります
  3. 要素ごとの乗算演算子を使用する必要があります.*

編集:私は実際にあなたの質問を最初に誤解していましたが、今は正しいはずです。

コードは次のようになります。

q1x = -170:5:170;
q2x = -65:5:140;
q3x = -180:5:70;

[x1, x2, x3] = meshgrid(q1x',q2x',q3x');
Q = [x1(:),x2(:),x3(:)];

q1 = Q(:,1);
q2 = Q(:,2);
q3 = Q(:,3);

c1 = cosd (q1);
c2 = cosd (q2);
c3 = cosd (q3);
s1 = sind (q1);
s2 = sind (q2);
s3 = sind (q3); 
x  = (320.*c1) - (975.*c1.*s2) - (200.*c1.*c2.*s3) - (200.*c1.*c3.*s2);
y  = (320.*s1) - (975.*s1.*s2) - (200.*c2.*s1.*s3) - (200.*c3.*s1.*s2);
z  = (975.*c2) + (200.*c2.*c3) - (200.*s2.*s3)     +  680;

それはかなりの量のデータです。-x,y,zあなたの表面のすべての単一点です。

今、あなたの「表面」がどのように見えるべきか、私にはよくわかりません。取得したいものを明確にしてください。


scatter3このかわいいキノコがあなたに届きます:

scatter3(x,y,z,5,z)
colormap(jet)
view(45,10)

キノコ

散布データから実際のサーフェスを取得するのは少し難しいですが、「散布データからのサーフェス」などについて調査することはできます...

于 2013-10-28T17:21:22.433 に答える