İnvisible plots and a error
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ömer Fatih Özdemir
am 22 Mai 2022
Kommentiert: Walter Roberson
am 24 Mai 2022
Guys what is wrong with my matlab codes? I could not take plots from first two figure and i take 'Array indices must be positive integers or logical values.' error from last two for loops.
clear;
clc;
y0=3;
x0=1:5;
for i=1:5
l(i)=sqrt(x0(i)^2+y0.^2);
Q(i)= atan(y0/x0(i));
end
plot(x0(i),l)
hold on
plot(x0(i),Q)
hold on
figure(1)
l1=3.5;
l2=3.5;
for a=1:5
q2(a)=acos((x0(a)^2+y0^2-l1^2-l2^2)/(2*l1*l2));
q1(a)=atan(y0/x0(a))-atan((l2*sin(q2)/(l1+l2*cos(q2))));
end
plot(x0(a),q1)
hold on
plot(x0(a),q2)
hold on
figure(2)
c2=45;
i1=2;
i2=3;
i3=1.5;
c1=0:180;
for k=0:180
x(k)=(i2+i3)*cos(c2)*cos(c1(k));
y(k)=(i2+i3)*cos(c2)*sin(c1(k));
z(k)=i1+(i2+i3)*sin(c2);
end
plot(c1(k),x)
hold on
plot(c1(k),y)
hold on
plot(c1(k),z)
hold on
figure(3)
i3_1=0.5:2;
c1_1=0:360;
for b=0:360
x(b)=(i2+i3_1)*cos(c2)*cos(c1(b));
y(b)=(i2+i3_1)*cos(c2)*sin(c1(b));
z(b)=i1+(i2+i3_1)*sin(c2);
end
plot(c1(b),x)
hold on
plot(c1(b),y)
hold on
plot(c1(b),z)
hold on
figure(4)
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 22 Mai 2022
clear;
clc;
y0=3;
x0=1:5;
for i=1:5
l(i)=sqrt(x0(i)^2+y0.^2);
Q(i)= atan(y0/x0(i));
end
figure(1)
plot(x0, l, 'DisplayName', 'l')
hold on
plot(x0, Q, 'DisplayName', 'Q')
hold on
legend show
figure(2)
l1=3.5;
l2=3.5;
for a=1:5
q2(a)=acos((x0(a)^2+y0^2-l1^2-l2^2)/(2*l1*l2));
q1(a)=atan(y0/x0(a))-atan((l2*sin(q2)/(l1+l2*cos(q2))));
end
plot(x0, q1, 'DisplayName', 'q1')
hold on
plot(x0, q2, 'DisplayName', 'q2')
hold on
legend show
figure(3)
c2=45;
i1=2;
i2=3;
i3=1.5;
c1=0:180;
clear x y z
for k=0:180
x(k+1)=(i2+i3)*cos(c2)*cos(c1(k+1));
y(k+1)=(i2+i3)*cos(c2)*sin(c1(k+1));
z(k+1)=i1+(i2+i3)*sin(c2);
end
plot(c1, x, 'DisplayName', 'x')
hold on
plot(c1, y, 'DisplayName', 'y')
hold on
plot(c1, z, 'DisplayName', 'z')
hold on
legend show
figure(4)
i3_1=0.5:2;
c1_1=0:360;
clear x y z
for b=0:360
x(b+1,:)=(i2+i3_1)*cos(c2)*cos(c1_1(b+1));
y(b+1,:)=(i2+i3_1)*cos(c2)*sin(c1_1(b+1));
z(b+1,:)=i1+(i2+i3_1)*sin(c2);
end
plot(c1_1, x, 'DisplayName', 'x')
hold on
plot(c1_1, y, 'DisplayName', 'y')
hold on
plot(c1_1, z, 'DisplayName', 'z')
hold on
legend show
The last of those is a bit odd because your i3_1 is a vector consisting of [0.5, 1.5] since you have 0.5:2 but the default increment is 1.
In all of your other plots, the i3 or equivalent is a scalar; this is the only plot where it is a vector.
7 Kommentare
Walter Roberson
am 24 Mai 2022
for b=1:numel(c1_1)
x(b,:)=(i2+i3_1)*cos(c2)*cos(c1_1(b));
y(b,:)=(i2+i3_1)*cos(c2)*sin(c1_1(b));
z(b,:)=i1+(i2+i3_1)*sin(c2);
end
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Annotations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



