139 lines
3.2 KiB
Matlab
139 lines
3.2 KiB
Matlab
%%%% ECE210-B Matlab Seminar, Homework 1.
|
|
% james ryan, 1/24/24
|
|
|
|
% preamble
|
|
close all;
|
|
clear;
|
|
clc;
|
|
|
|
%% Scale-'ers
|
|
% (1)
|
|
% Takes the absolute value of
|
|
% sin(pi/3)
|
|
% PLUS
|
|
% j divided by secant of (-5/3)*pi
|
|
a = abs(sin(pi ./ 3) ...
|
|
+ ((1 * j) ./ (sec((-5 * pi) / 3))) ...
|
|
);
|
|
|
|
% (2)
|
|
% n = 3, cubic root
|
|
l = nthroot(8, 3);
|
|
|
|
% (3)
|
|
% [1, 2, 3, ..., 79, 80]
|
|
u_mat = 1:80;
|
|
|
|
% Sums all the terms from u_mat, scales by 2 / 6!, and takes the square root
|
|
u = sqrt((2 / factorial(6)) * sum(u_mat));
|
|
|
|
% q4
|
|
% takes the square
|
|
% of imaginary value
|
|
% of the floor
|
|
% of the log
|
|
% of the square root of 66
|
|
% taken to the power of 7j
|
|
m = (imag(floor(log(sqrt(66).^(7 * j))))).^2;
|
|
|
|
%% Mother...?
|
|
% (1)
|
|
% Makes a 1x4 matrix from a l u & m,
|
|
% and transposes the formed matrix into a 4x1 matrix
|
|
A = [a; l; u; m];
|
|
|
|
% (2)
|
|
% makes a 2x2 matrix using a l u & m.
|
|
F = [a l; u m];
|
|
|
|
% (3)
|
|
% takes the non-conjugate transpose of F
|
|
T = F.';
|
|
|
|
% (4)
|
|
% takes the inverse of the matrix product of T * F
|
|
B = inv(T * F);
|
|
check = B * (T * F)
|
|
|
|
% (5)
|
|
% Makes a square matrix comprised of T and F
|
|
C = [T F; F T];
|
|
|
|
%% Cruelty
|
|
meanB = mean(B, "all"); % sums "all" values in matrix B into one scalar
|
|
% squashes every row down into the sum of all elements
|
|
% in a given row
|
|
|
|
meanC = mean(C, 2); % ... or takes the mean of every value along a
|
|
% dimension (the 2nd dimension), and squashes
|
|
% the matrix down into one dimension.
|
|
|
|
%% Odd Types
|
|
% eval one
|
|
evalOne = T + F;
|
|
%{
|
|
comments:
|
|
evalOne =
|
|
|
|
2 5
|
|
5 8
|
|
|
|
This makes sense, considering T was [1 3; 2 4] and F was [1 2; 3 4]
|
|
It seems like, at the same index on both matrices, the value occupying
|
|
that spot was taken from both and summed.
|
|
|
|
%}
|
|
|
|
% eval 2
|
|
evalTwo = T + 1;
|
|
%{
|
|
comments:
|
|
evalTwo =
|
|
|
|
2 4
|
|
3 5
|
|
|
|
This makes sense, since it seems like 1 was interpreted as a 2x2 matrix
|
|
occupied only by 1's. The same summing algorithm was applied, and every
|
|
value occupying T was incremented by 1.
|
|
|
|
This could be confusing if we were multiplying instead of dividing,
|
|
since it would make more intuitive sense to be referring to the
|
|
identity matrix as 1, rather than a matrix filled wuth 1's.
|
|
|
|
%}
|
|
|
|
% eval kicks
|
|
evalKicks = A + C;
|
|
%{
|
|
comments:
|
|
evalKicks =
|
|
|
|
2 5 4 6
|
|
3 6 6 8
|
|
2 4 4 7
|
|
4 6 5 8
|
|
|
|
A and C are not the same dimensions. A is 1x4 while C is 4x4.
|
|
It seems that C was sliced by rows in order to let this
|
|
operation make sense.
|
|
so for every Row in C, the value corresponding
|
|
to the matching column in A was added to that value in C.
|
|
Put nicely: Every row in C (a 1x4 matrix) was summed with A,
|
|
and then returned to the row index it previously occupied in C proper.
|
|
|
|
%}
|
|
|
|
|
|
%% Not What it Seems...
|
|
for k = [3 5 10 300 1e6]
|
|
% sets up a 1xk matrix of `k` evenly spaced vals that are [0, 1]
|
|
genericMatrix = linspace(0, 1, k);
|
|
|
|
% squares every val in the matrix, sums all squared vals together, and divs
|
|
% every element by k.
|
|
% Essentially -- average value of x^2 from 0 to 1
|
|
% Also known as power, according to fred
|
|
genericScalar = sum(genericMatrix.^2) ./ k;
|
|
end
|