CS1371_2008_Spring_Questions_G

advertisement
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
Part 1 – Multiple Choice [60 Points]
1. What is the effect of the function imager given the image matrix img?
function [ret] = imager(img)
img = double(img);
val = uint8((img(:,:,1)+img(:,:,2)+img(:,:,3))/3);
ret(:,:,1) = val;
ret(:,:,2) = val;
ret(:,:,3) = val;
A.
B.
C.
D.
E.
ret is a black and white image
ret is a grayscale image
ret is twice as large as img
ret is the same as img
None of the above
2. Given the following lines of code, which of the following operations would produce the same
sound?
[x, fs] = wavread('mysound.wav')
sound(x, fs)
A.
B.
C.
D.
E.
x = x(round(linspace(1, length(x), 2*length(x))))
sound(x, fs/2)
x = 2*x
sound(x, fs/2)
x = sound(x, fs*2)
sound(x, fs/2)
x = x(round(linspace(1, length(x), 2*length(x))))
sound(x, fs*2)
x = x/2
sound(x, fs/2)
3. Given the following Matlab code:
A = true;
B = false;
C = (A || B) && ~(B && B)
if C
output = 'almost there'
else
output = 0
end
What is the class of output?
A. Char
B. Double
C. Logical
D. Cell
E. Error
Page 1 of 11
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
4. Which of the following becomes much less efficient if the input vector is previously sorted?
A. Bubble sort
B. Insertion sort
C. Merge sort
D. Quick sort
E. Both C and D
5. Given the following:
x = [0 1 2 3 4]
y = [0 2 4 6 8]
plot(x, y, 'ro')
What would the plot look like?
A. A plot of red circular points with the given x and y values
B. A solid red line connecting the given x and y values
C. A curved fit for the given x and y values
D. Error
E. None of the above
6. Convert the following while loop to a for loop.
vec = [1 2 3 4];
sum = 0;
while length(vec)>0
sum = sum + vec(1);
vec(1) = [];
end
A.
for vec
sum = sum + vec(i);
end
B.
for i = vec
sum = sum + vec(i);
end
C.
for i < length(vec)
sum = sum + vec(i);
i = i + 1;
end
D.
for i = vec
sum = sum + i;
end
E.
for i = length(vec)
sum = sum+vec(i);
end
Page 2 of 11
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
7. Which of the following is a valid function header?
A. function = fx(input)
B. function ret1, ret2 = fx(input)
C . function ret = fx(34)
D. function fx
E. [ret1, ret2] = fx(input1, input2)
8. A structure array is defined as follows:
Person(1).name = 'Bob'
Person(2).name = 'Joe'
Person(1).dad = Person(2)
Which of the following are valid ways to obtain 'Joe'?
I. Person(2).name
II. Person(1).dad.name
III. getfield(Person(1).dad)
A. II & III only
B. I & III only
C. I only
D. I, II, & III
E. I & II only
9. How would you lower a note three half-steps in Matlab given the following code?
[a d] = wavread('c-note.wav');
b = length(a);
half=2^(1/12);
A. a(floor(linspace(1,b,b/(half^3))))
B. a(floor(linspace(1,b,b/(half/3))))
C. a(floor(linspace(1,b,b/(half*3))))
D. a(floor(linspace(1,b,b/half^(-3))))
E. a(floor(linspace(1,b,b*half*3)))
10. Which of the following have best case N*logN big O?
I. Bubble Sort
II. Merge Sort
III. Quick Sort
IV. Insertion Sort
A. I and II
B. II and III
C. II and IV
D. III and IV
E. I, II, and III
Page 3 of 11
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
11. Given:
vec = [5 9 6 3 6 8]
Which of the following will NOT return the vector v2 = [5 6 3 6 8]?
A. v2 = vec(vec < 9)
B. v2 = vec([1 3:6])
C. v2 = vec;
v2(vec == max(vec))=[]
D. v2 = vec(vec ~= 9)
E. v2 = vec;
v2(vec > 9)=[]
12. What is the difference between M and N where M = length(diff([5 4 3 2 1])) and
N = length(cumsum([5 4 3 2 1]))?
A. M = N
B. M > N
C. M < N
D. Their difference cannot be determined
E. None of the above
13. Given :
x = linspace(1,10,100)
y= x.^3
y1 = diff(y)./diff(x)
Which of the following will plot the second derivative?
A. plot(x(2:end), diff(y1)./diff(x(2:end)))
B. plot(x(3:end), diff(y1)./diff(x(2:end)))
C. plot(x(2:end), diff(y1)./diff(x))
D. plot(x(2:end), diff(y1(2:end))./diff(x(2:end)))
E. plot(x, diff(y1)./diff(x(2:end)))
14. Given an excel file (test.xls) containing the information below:
The command [a,b,c] = xlsread('test.xls'); is run in Matlab. What is the correct order
of a, b, and c in order of increasing number of elements (i.e. number of rows multiplied by
number of columns for each)?
A. c, b, a
B. a, b, c
C. a == b, c
D. b, c, a
E. a, b == c
Page 4 of 11
CS1371 - Computing for Engineers Final Exam Version G1
15. Which choice below is NOT true about the following line of code?
f1 = fopen('index.txt', 'w')
A. The file handle for ‘index.txt’ is stored in the variable f1
B. The text from ‘index.txt’ is stored in the cell array f1
C. The file has been opened with read only permission
D. Both A and C
E. Both B and C
16. Given the following code:
vec
vec
vec
vec
= [4 234 -5 8 4 23 5 -94]
=vec( vec<20)
= vec'
= abs(vec)
What is the final output of vec?
A. [1 0 1 1 1 0 1 1]
B. [1; 0; 1; 1; 1; 0; 1; 1]
C. [4; 5; 8; 4; 5; 94]
D. [4 5 8 4 5 94]
E. None of the above
17. Given:
prof = struct('name','Cedric','classes',4);
Which of the following modifies the original structure, prof?
A. prof = setfield(prof,'name','Stallworth');
B. rmfield(prof,'classes');
C. cedric.age = 'old';
D. getfield(prof, 'name');
E. All of the above
Page 5 of 11
May 1, 2008
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
18. Let the following code be executed in Matlab.
K = ones(100, 100);
L = ones(50, 100) .*7;
M = zeros(100, 20);
Which of the following lines of code will NOT produce an error in Matlab?
I. K*L;
II. inv(L);
III. L(20:30, 40:50) = [];
IV. M\K;
V. K(50,100) = L;
A. I and III
B. II, IV and V
C. IV and V
D. II only
E. IV only
19. Using what you know about your homework problem recursiveSum, recursion, and coding
in general, which of the following lines of code is incorrect?
1
2
3
4
5
6
function ret = myRecursiveSum(vector)
%% Takes in a vector and returns its sum
if length(vector) > 0
ret = ret + myRecursiveSum(vector(2:end))
else
ret = 0;
end
A.
B.
C.
D.
E.
Line 1
Line 2
Line 3
Line 5
Everything is correct in the above code
20. Given:
cell = {'cool', 1:4, false}
cell{2} = [];
What is the final value of cell?
A. {'cool', [], false}
B. {'cool', false}
C. {'cool', {}, false}
D. {'cool', [1 3 4], false}
E. Error
Page 6 of 11
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
Part 2 – Tracing Questions [30 Points]
A. Given the following function:
function [A, B]= trfa(x,y)
if strcmp(x,y) && strcmpi(x,y)
A = true;
B = true;
elseif ~strcmp(x,y) && strcmpi(x,y)
A = false;
B = true;
elseif strcmp(x,y) || strcmpi(x,y)
A = true;
B = false;
else
A = (x==x);
B = (x==y);
end
The function is called using the test cases below. Please choose the correct outputs.
21. [A, B] = trfa('ta', 'TA')
A. A = 0; B = 0
B. A = 0; B = 1
D. A = 1; B = 1
E. Error
C. A = 1; B = 0
22. [A, B]= trfa('prof','prof')
A. A = 0; B = 0
B. A = 0; B = 1
D. A = 1; B = 1
E. Error
C. A = 1; B = 0
23. [A, B] = trfa('student','students')
A. A = 0; B = 0
B. A = 0; B = 1
D. A = 1; B = 1
E. Error
C. A = 1; B = 0
24. [A, B] = trfa('C','D')
A. A = 0; B = 0
B. A = 0; B = 1
D. A = 1; B = 1
E. Error
C. A = 1; B = 0
25. [A, B,] = trfa(8,8)
A. A = 0; B = 0
B. A = 0; B = 1
D. A = 1; B = 1
E. Error
Page 7 of 11
C. A = 1; B = 0
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
B. The following script is executed in Matlab:
A = struct('Name',{'Plant','Pond Snail','Fish','Bird','Human'}, ...
'Prey',{'Sun','Plant','Pond Snail','Fish','Fish'});
setfield(A(1),'Prey','None');
B = [];
C = [];
for index = 1:length(A)
v = getfield(A(index),'Prey');
i = find(strcmp(B,v));
if length(i) == 0
B = [B {v}];
C = [C 1];
else
C(i) = C(i) + 1;
end
end
D = A(1:end-1);
E = [B {C}];
F = fieldnames(rmfield(A,'Name'));
26. What are the values stored in variable B?
A. 'None', 'Plant', 'Pond Snail', 'Fish', 'Fish'
B. 'Sun', 'Plant', 'Pond Snail', 'Fish', 'Fish'
C. 'Plant', 'Pond Snail', 'Fish', 'Bird', 'Human'
D. 'None', 'Plant', 'Pond Snail', 'Fish'
E. 'Sun', 'Plant', 'Pond Snail', 'Fish'
27. What are the values stored in variable C?
A. [1 1 1 1 1 ]
B. [1 1 1 2]
C. [2 2 2 1]
D. [1 1 1 2 2]
28. What is the class of variable D?
A. struct
B. cell
C. array
D. double
E. char
D. double
E. char
D. double
E. char
29. What is the class of variable E?
A. struct
B. cell
C. array
30. What is the class of variable F?
A. struct
B. cell
C. array
Page 8 of 11
E. [1 1 1 1 2]
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
C. The following function fitPolys has been written in MATLAB:
1
2
3
4
5
6
7
8
9
10
11
12
function ret = fitPolys(x, mpoly, n)
[r c] =
for i =
y =
for
size(mpoly);
1:r
zeros(1,length(x));
k = 1:c
y = y + mpoly(i,k)*x.^(c-k);
end
coeff(i,:) = polyfit(x,y,n);
newy(i,:) = polyval(coeff(i,:),x);
end
ret = newy;
Answer the following questions based on the following function call:
ret = fitPolys(-20:20, [5 6 1 5; 0 4 2 5; 0 0 3 1], 3)
31. What are the dimensions (rows by columns) of the output variable ret?
A. 1 x 41
B. 3 x 40
C. 40 x 3
D. 3 x 41
E. 41 x 3
32. The x and y data for which polynomial is passed into polyfit during the second iteration of
the outermost for loop?
A. 5x4 + 6x3 + x2 + 5x
B. 5x3 + 6x2 + x + 5
D. 4x2 + 2x + 5
E. 3x + 1
C. 4x4 + 2x3 + 5x2
33. What is the order of the fitted polynomial during the second iteration of the outermost for
loop?
A. 1
B. 2
C. 3
D. 4
E. 5
34. What would happen if you were to replace line 5 with: y = [];
A.
B.
C.
D.
E.
Nothing would change. The function would produce the same results.
MATLAB would generate an error: Matrix dimensions must agree
MATLAB would generate an error: Index exceeds matrix dimensions
MATLAB would generate an error: Undefined function or variable “y”
The function would not cause an error, but it would produce different results.
35. What would happen if you were to replace line 6 with: for k = c:-1:1
A. Nothing would change. The function would produce the same results.
B. MATLAB would generate an error: Matrix dimensions must agree
C. MATLAB would generate an error: Index exceeds matrix dimensions
D. MATLAB would generate an error: Undefined function or variable “y”
E. The function would not cause an error, but it would produce different results.
Page 9 of 11
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
Part 4 – Coding Problems [40 Points]
You must complete ALL of the following coding questions. Your code should not exceed 7
lines for any individual question. These are NOT functions. A function header is NOT
necessary. Please copy your answers to the given answer sheet.
38. Given vectors x and y of equal length containing x and y data values, please do the
following:
- Compute the cumulative integral of y and store in the variable integ
- Fit a second order line to the integral and store in fit
- Evaluate the fit with the original x values and store in newInteg
- Plot integ and newInteg against x (in the same plot)
39. You are given a sound called 'sound.wav'. Determination the duration of the sound (how
many seconds it plays for) and store this is duration. Then, plot the amplitude of the sound
against time.
40. Write the code to plot the rotation the function f(x) = x2 around the x axis. The first few
lines have been done for you.
u = linspace(0, 5);
v = u.^2;
th = linspace(0, 2*pi);
[uu, tth] = meshgrid(u, th);
[vv, tth] = meshgrid(v, th);
41. Given a vector v, write code that creates the following items (no hard coding!):
- vecA, which contains all the elements of v which are less than 9
- vecB which is v in reverse order
- vecC, which contains only the elements of v which are at odd indices
- D, which is the average of the values in v
- vecE which is a vector of length 5 with random values between 5 and 7.
Part 4 Criteria (each worth 10 points, 40 points total)
38. Suggested solution:
Page 10 of 11
CS1371 - Computing for Engineers Final Exam Version G1
May 1, 2008
integ = cumtrapz(x,y);
fit = polyfit(x, integ, 2);
newInteg = polyval(fit, x);
plot(x, integ, x, newInteg)
- 3 points each for correctly defining integ/fit/newInteg
- 1 point for plotting correctly
- 1 point if concept not completely correct (except for the plotting)
39. Suggested solution:
[data, Fs] = wavread('cNote.wav');
N = length(data);
duration = N/Fs;
dt = 1/Fs;
t = dt:dt:tnote
plot(t, data)
- 2 points each for:
- Correctly reading in sound
- Correctly defining a time vector/dt
- 3 points each for:
- Correctly defining duration
- Plotting t/amplitude
- only 1 point for each of above if not completely correct
40. Suggested solution:
rr = vv;
xx = uu;
yy = rr.*sin(tth);
zz = rr.*cos(tth);
surf(xx,yy,zz) or mesh(xx,yy,zz)
Requirements:
- Correctly defines rr/xx/yy/zz (these count as 4 different requirements)
- Plots the surface using surf or mesh
- 2 points for each of the above requirements if completely correct
- 1 point if it is almost correct (i.e. student left out dot in the multiplication, etc.)
39. Suggested solution
vecA = v(v<9);
vecB = v(end:-1:1);
vecC = v(1:2:end);
D = mean(v);
vecE = 2*rand(1,5)+5;
- 2 points each for correctly defining vecA, vecB, vecC, D, and vecE
- 1 point if almost correct
Page 11 of 11
Download