uploaded all materials
This commit is contained in:
195
hw3/feedback/Ryan_HW3_021424.m
Normal file
195
hw3/feedback/Ryan_HW3_021424.m
Normal file
@ -0,0 +1,195 @@
|
||||
%%%% 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]);
|
Reference in New Issue
Block a user