Resuelva el problema de que la dimensión de la asignación no coincide, la cantidad de elementos debe ser la misma, etc.

evento:

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

error:

  • Las dimensiones asignadas con subíndices no coinciden.
  • En la asignación A( : ) = B, el número de elementos en A y B debe ser el mismo

Causa: pp (i) pp (i)p p ( i ) está presente[ x ( i ) , y ( i ) , z ( i ) ] [x(i),y(i),z(i)][ x ( yo ) ,y ( yo ) ,El i-ésimo elemento de z ( i ) ] , matlab por defecto es pp (i) pp(i)p p ( i ) es un número con una longitud de 1. Porque en este códigopp ( i ) pp(i)La asignación de p p ( i ) es un vector fila, yx , y , zx,y,zx ,y ,Cada combinación de z tiene 17 grupos, lo que hará diferente el número de elementos alrededor del signo igual. Por lo tantopp ppp p debe establecerse en una matriz, la primera fila de la matriz almacenai = 1 i=1i=Resultado de 1 , enésimon filas almacenani = ni=ni=el resultado de n

Solución:
poner pp ( i ) pp(i)La forma de p p ( i ) se cambia a la forma de una matriz, es decir,pp ( i , : ) pp(i,:)p p ( yo ,:)

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

Supongo que te gusta

Origin blog.csdn.net/AlbertDS/article/details/110368544
Recomendado
Clasificación