代入次元が合わない、要素数が同じでなければならないなどの問題を解決します。

イベント:

r = 600;
n = 17;% 17paragraph
p = [0 -321.79725039 506.40549922];
allgamma = 2.00943006740867
pera = allgamma/(n-1);
f = 0.566081293090563;
for i = 1:n

    angle(i) = f + pera*(i-1);
    x(i) = p(1);
    y(i) = - r * sin(angle(i));
    z(i) =   r * cos(angle(i));

    pp(i) = [x(i),y(i),z(i)];
    
end

間違い:

  • 割り当てられた下付きの寸法が一致しません。
  • 代入 A( : ) = B では、A と B の要素の数は同じでなければなりません

原因: pp ( i ) pp(i)pp(i)是存储 [ x ( i ) , y ( i ) , z ( i ) ] [x(i),y(i),z(i)] [ x ( i ) ,y ( i ) z ( i ) ]の i 番目の要素pp ( i ) pp(i)p p ( i )は長さ 1 の数値です。なぜなら、このコードではpp ( i ) pp(i)p p ( i )の代入は行ベクトルであり、x 、 y 、 zx、y、z× zの各組み合わせには 17 のグループがあり、等号の周囲の要素の数が異なります。したがって、pp ppp p は行列に設定する必要があり、行列の最初の行にはi = 1 i=1=1の結果nn 番目n行にはi = ni=n=nの結果。

解決策: pp ( i ) pp(i)
を入力します。pp ( i )の形式は行列の形式、つまり pp ( i , : ) pp(i,:) に変更されますpp ( i , _:)

r = 600;
n = 17;% 17paragraph
p = [0 -321.79725039 506.40549922];
allgamma = 2.00943006740867
pera = allgamma/(n-1);
f = 0.566081293090563;
for i = 1:n

    angle(i) = f + pera*(i-1);
    x(i) = p(1);
    y(i) = - r * sin(angle(i));
    z(i) =   r * cos(angle(i));

    pp(i,:) = [x(i),y(i),z(i)];
    
end

おすすめ

転載: blog.csdn.net/AlbertDS/article/details/110368544