Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите разобраться в Matlab. С темой построения графиков и фракталов

Sofiia Знаток (254), на голосовании 11 месяцев назад
Нужно написать программу построения точечной диаграммы. Построить графики точечных диаграмм при количестве точек 20, 100, 2000. Программу я написала, но проблема в том что там выдаёт ошибку, я уже не знаю что и где менять. По заданию: 5 вершин в первоначальной фигуре, тип многоугольника - правильный, X-39 и Y-37

x=[1 10 20];
y=[1 15 1];

CX=[39];
CY=[37];

newcoorX=0;
newcoory=0;
figure

plot(x(1),y(1),'ob',x(2),y(2),'ob',x(3),y(3),'ob',x(4),y(4),'ob',x(5),y(5),'ob',CX(1),CY(1),'m-*')

for(i=1:10)

NUMBER=randi(5);

if (NUMBER==1)
newcoorX=(x(1)+CX(i))/2;
newcoorY=(y(1)+CY(i))/2;
CX(i+1)=newcoorX;
CY(i+1)=newcoorY;
end
if (NUMBER==2)
newcoorX=(x(2)+CX(i))/2;
newcoorY=(y(2)+CY(i))/2;
CX(i+1)=newcoorX;
CY(i+1)=newcoorY;
end
if (NUMBER==3)
newcoorX=(x(3)+CX(i))/2;
newcoorY=(y(3)+CY(i))/2;
CX(i+1)=newcoorX;
CY(i+1)=newcoorY;
end
if (NUMBER==4)
newcoorX=(x(3)+CX(i))/2;
newcoorY=(y(3)+CY(i))/2;
CX(i+1)=newcoorX;
CY(i+1)=newcoorY;
end
if (NUMBER==5)
newcoorX=(x(3)+CX(i))/2;
newcoorY=(y(3)+CY(i))/2;
CX(i+1)=newcoorX;
CY(i+1)=newcoorY;
end
hold on
plot(CX(i),CY(i),'or')
end % кінець циклу for(i=1:20)
grid on
Голосование за лучший ответ
Centurio Просветленный (30364) 12 месяцев назад
Вы задаёте по 3 координаты х и у, а дальше в plot перечисляете уже 5 координат.
CenturioПросветленный (30364) 12 месяцев назад
Код можно и короче написать.
x=[1 10 20 25 33];;
y=[1 15 1 2 8];;

CX=39;
CY=37;

plot(x,y,'ob',C),CY,''m-*)

N=10;
CX=repmat(CX,1,N+1);
CY=repmat(CY,1,N+1);
NUMBER=randi([1 5],1,N);;

for i=1:N
CX(i+1)=(x(NUMBER(i))+CX(i))/2;
CY(i+1)=(y(NUMBER(i))+CY(i))/2;
end
SofiiaЗнаток (254) 11 месяцев назад
Спасибо большое! Уже разобралась в чём там проблема была. Элементарная невнимательность и за упрощённый код огромное спасибо
Похожие вопросы