Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a MATLAB script to generate a 512 × 512 test image consisting of a white c

ID: 3921267 • Letter: W

Question

Write a MATLAB script to generate a 512 × 512 test image consisting of a white circle against a black background, use this image as an input to the fft2 function, and display the resulting spectrum. You should be able to notice the presence of “ringing” artifacts in the resulting spectrum, owing to the sharp transitions between the circle and the background. Andimplement the solution to the ringing artifact, while keeping the input image similar to the original (white circle against a black background) as much as possible.

Explanation / Answer

mm:

la $a3, array_A # base address for array_A loaded into $a3

la $a1, array_B # base address for array_B loaded into $a1

la $a2, array_C # base address for array_C loaded into $a2

li $t1, four # $t1 = four (row-size and loop end)

li $s0, zero # i = 0; initialize first for loop

loop1:

li $s1, zero # j = 0; restart 2d for loop

loop2:

li $s2, zero # k = 0; restart third for loop

sll $t2, $s0, two # $t2 = i * four (size of row of c)

addu $t2, $t2, $s1 # $t2 = i * size(row) + j

sll $t2, $t2, two # $t2 = computer memory unit offset of [i][j]

addu $t2, $a2, $t2 # $t2 = computer memory unit offset of [i][j]

lw $t4, 0($t2) # $t4 = two bytes of c[i][j]

loop3:

sll $t0, $s2, two # $t0 = k * four (size of row of b)

addu $t0, $t0, $s1 # $t0 = k * size(row) + j

sll $t0, $t0, two # $t0 = computer memory unit offset off [k][j]

addu $t0, $a1, $t0 # $t0 = computer memory unit address of b[k][j]

lw $t5, 0($t0) # $t5 = two bytes of b[k][j]

sll $t0, $s0, two # $t0 = i * four (size of row of a)

addu $t0, $t0, $s2 # $t0 = i * size(row) + k

sll $t0, $t0, two # $t0 = computer memory unit offset of [i][k]

addu $t0, $a3, $t0 # $t0 = computer memory unit address of a[i][k]

lw $t6, 0($t0) # $t6 = two bytes of a[i][k]

mul $t5, $t6, $t5 # $t5 = a[i][k] * b[k][j]

add $t4, $t4, $t5 # $t4 = c[i][j] + a[i][k] * b[k][j]

addiu $s2, $s2, one # $k = k + one

bne $s2, $t1, loop3 #if (k != 4) attend loop3

sw $t4, 0($a2) # c[i][j] = $t4

#----------TEST-------------

li $v0, 1

lw $a0, ($a2)

syscall

li $v0, 4

la $a0, new_row

syscall

#----------TEST-------------

addiu $s1, $s1, one # $j = j + one

addi $a2, $a2, 4

bne $s1, $t1, loop2 # if (j != 4) attend loop2

addiu $s0, $s0, one # $i = i + one

bne $s0, $t1, loop1 # if (i != 32) attend L1

Exit:

li $v0, 10 #exits

syscall

    .data

    array_A: .word 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1

    array_B: .word 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2

    array_C: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

    output_row_string_C: .asciiz "Matrix C Output Row "

    colon_string: .asciiz ":

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote