ece210/hw3/feedback/Ryan_HW3_021424.m

196 lines
4.2 KiB
Matlab

%%%% ECE-210-B HW 3 - Plotting
% James Ryan, 02/14/24
% preamble
close all; clear; clc;
%% Two Dimensions
% (1)
x = linspace(0, 2*pi, 50);
f = sin(x);
figure;
plot(x, f, "g");
xlim([0 2*pi]); % plot only within x's range
xticks([0:pi/2:2*pi]);
xticklabels({'0','\pi/2','\pi','3\pi/2','2\pi'})
xlabel("x");
ylabel("sin(x)");
title('Plot of sin(x) over 50 evenly spaced points between [0, 2\pi]');
% (2)
x; % 50 evenly spaced pts between [0, 2pi]
g = cos(2.*x);
figure;
hold on;
plot(x, f, "g");
plot(x, g, "b");
hold off;
xlim([0 2*pi]); % plot only within x's range
xticks([0:pi/2:2*pi]);
xticklabels({'0','\pi/2','\pi','3\pi/2','2\pi'})
xlabel("x");
ylabel("y");
legend( 'y = sin(x)', ...
'y = cos(2x)');
% <-.02> (style) one thing about tabs: they don't always line
% up the same way on other people's machines. this indentation
% looks... strange to me, with my 8-space tabstops.
title('knock knock! whose there? sin! sine who? $\pm\sqrt{\frac{1 + cos2\theta}{2}}$', "interpreter", "latex");
% <+.02> nice.
% (3)
figure;
x; % 50 evenly spaced pts between [0, 2pi]
% top plot - f = sin(x)
subplot(2,1,1);
stem(x, f, "r*");
grid on
xlim([0 2*pi]);
xticks([0:pi/2:2*pi]);
xticklabels({'0','\pi/2','\pi','3\pi/2','2\pi'})
xlabel("t [s]"); % we're pretending its time now :)
ylabel("Position [d]");
title('Position of a controlled laser pointer, relative to origin location');
subtitle('Sampled 50 times over 2\pi seconds.');
% <+.01> the theme here really gets me.
% bottom plot - g = cos(2x)
% changing cos(2x)'s amplitude; computing amplitude ratio in d
rand_amp = 100 * rand;
g = rand_amp .* g;
amplitude_ratio_db = 20.*log10(rand_amp);
subplot(2,1,2);
stem(x, g, "color", "#D95319", "Marker", "+", "MarkerEdgeColor", "#D95319", "MarkerFaceColor", "#D95319");
% (style) these are very long lines...
grid on
xlim([0 2*pi]);
xticks([0:pi/2:2*pi]);
xticklabels({'0','\pi/2','\pi','3\pi/2','2\pi'})
yticks(linspace(-rand_amp, rand_amp, 5));
% usually ticks are nicely readable numbers for, well,
% readability.
xlabel("t [s]");
ylabel("Position [d]");
title(sprintf('Pet cats vertical position while seeking laser pointer. \n Position Ratio (vs sin) [dB]: %d' ...
,amplitude_ratio_db));
% (interesting place for that comma)
subtitle('Sampled 50 times over 2\pi seconds.');
% (4)
pointer = imread("./pointer.jpg");
% <-.05> image was not submitted! i went and found one...
%{
returns a 720x1280x3 matrix, corresponding to
720 rows
1280 columns
3 color channels per (row,col) pair
to form a complete color image, in matrix form.
Each entry in the matrix is stored as uint8, or
an 8-bit integer, implying colors are specified as
hex codes (eg #RRGGBB - specify the Red, Green, and
Blue values in HEX, 8 bits per channel, 3 channels).
%}
% Invert color channels
new_pointer = 255 - pointer;
figure;
imshow(pointer);
figure;
imshow(new_pointer);
%% Three Dimensions
% (1)
x = 0:.01:1;
y = x;
z = exp(-x.^2 - y.^2);
figure;
% "Create this plot
% three times
% in three different subplots
% using plot3..., scatter3, surf, *and* mesh (4 tools?)"
% I'm making 4 plots, because you said "and", meaning all the tools.
% that is indeed what i meant for you to do. good catch.
% plot3
subplot(2,2,1);
plot3(x,y,z);
xlabel("x");
ylabel("y");
zlabel("z");
title('z = exp(-x^2 - y^2) (PLOT3)');
legend('z = exp(-x^2 - y^2)');
daspect([1 1 1]);
view([-2 2 1]);
grid on;
% scatter3
subplot(2,2,2);
scatter3(x,y,z);
xlabel("x");
ylabel("y");
zlabel("z");
title('z = exp(-x^2 - y^2) (SCATTER)');
legend('z = exp(-x^2 - y^2)');
daspect([1 1 1]);
view([-2 2 1]);
grid on;
% <-.00> i was not totally clear here, so i'll let this slide,
% but i meant plot the surface itself using `scatter` and
% `plot3`.
% surf
[X, Y] = meshgrid(x);
Z = exp(-X.^2 - Y.^2);
subplot(2,2,3);
surf(X,Y,Z);
xlabel("x");
ylabel("y");
zlabel("z");
title('z = exp(-x^2 - y^2) (SURF)');
legend('z = exp(-x^2 - y^2)');
grid on;
view([-2 5 1.3]);
% mesh
subplot(2,2,4);
mesh(X,Y,Z);
xlabel("x");
ylabel("y");
zlabel("z");
title('z = exp(-x^2 - y^2) (MESH)');
legend('z = exp(-x^2 - y^2)');
grid on;
view([-2 5 1.3]);
% (2)
t = 0:0.01:1;
x = t.*cos(27.*t);
y = t.*sin(27.*t);
z = t;
figure;
plot3(x,y,t);
xlabel("x");
ylabel("y");
zlabel("z");
title('Wheeee!');
grid on;
daspect([1 1 1]);
view([90 90 20]);