Multiple answers into single array

27 Ansichten (letzte 30 Tage)
Brayden Kirk
Brayden Kirk am 26 Apr. 2021
Kommentiert: Clayton Gotberg am 26 Apr. 2021
Below is my current workspace in MATLAB.
theta = linspace(0,2*pi);
for a = [10:0.1:14]
c = 30-a;
bt = -a.*sin(theta)+((a.^2*sin(theta).*cos(theta))/sqrt(c.^2-a.^2*sin(theta).^2));
M = [max(bt)]
end
When I run this file it gives me the maximum value of 41 arrays. The answer shows like this:
M =
13.5983
M =
13.6983
M =
13.7983
M =
13.8983
M =
13.9982
I am wondering is there a way I can make my answer into a single array which I can then plot against a(10:14)?
I wish for it to look something like this:
M =
13.5983 13.6983 13.7983 13.8983 13.9982
OR
M =
13.5983
13.6983
13.7983
13.8983
13.9982
Any help would be great

Akzeptierte Antwort

Clayton Gotberg
Clayton Gotberg am 26 Apr. 2021
Bearbeitet: Clayton Gotberg am 26 Apr. 2021
This is definitely possible! Since you aren't using integers for indexing, there are a couple of ways to do it:
theta = linspace(0,2*pi);
M = []; % Create empty M
for a = [10:0.1:14]
c = 30-a;
bt = -a.*sin(theta)+((a.^2*sin(theta).*cos(theta))/sqrt(c.^2-a.^2*sin(theta).^2));
M = [M max(bt)]; % Add max(bt) to the end of M every loop
end
% Also
theta = linspace(0,2*pi);
count = 1; % Create empty M
for a = [10:0.1:14]
c = 30-a;
bt = -a.*sin(theta)+((a.^2*sin(theta).*cos(theta))/sqrt(c.^2-a.^2*sin(theta).^2));
M(count) = max(bt);
count = count+1;
end
% Or
theta = linspace(0,2*pi);
area_of_interest = 10:0.1:14;
count = length(area_of_interest);
for k = 1:count
a = area_of_interest(k)
c = 30-a;
bt = -a.*sin(theta)+((a.^2*sin(theta).*cos(theta))/sqrt(c.^2-a.^2*sin(theta).^2));
M(k) = max(bt); % Add max(bt) to the end of M every loop
end
For plotting against a(10:14), I want to check about what you mean.
If you want to plot the maximum against a from 10 to 14, just use plot(a,M). If you want to plot only against the five values a = [10 ,11, 12 ,13, 14], you can just change the area of interest from 10:0.1:14 to 10:14. If you want to plot the 10th through 14th elements of a and M, you can say plot(a(10:14),M(10:14)).
  11 Kommentare
Brayden Kirk
Brayden Kirk am 26 Apr. 2021
Thanks so much Clayton
Clayton Gotberg
Clayton Gotberg am 26 Apr. 2021
I'm glad I could help! If you feel that this question has been fully answered, please accept my answer in order to keep the number of open questions minimized. If you need anything else, though, just ask! I also recommend the MATLAB online training courses (such as the MATLAB Onramp) if you feel like a more general tutorial would be helpful.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrix Indexing 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!

Translated by