Multiple Image reconstruction with real and imaginary part in 2d array

1 view (last 30 days)
I have two mat files one with real and another with imaginary part of 500 images. I am using the following line to reconstruct a single image :
" imshow(reshape(sqrt(a_imag(:,i).^2+a_real(:,i).^2),[128,128]) "
Each mat file is a 2D array (16384x500) with grayscale images of size 128x128. 'i' indiactes the image/column number.
I am trying to reconstruct all the 500 images and save each of them in .jpg format in the same order from 1-500. I tried this code and I am recieving an error.
a_real = load("img_real.mat");
a_imag = load("img_imag.mat");
for i = 1 : 500
I(:,i) = reshape(sqrt(a_imag(:,i).^2+a_real(:,i).^2),[128,128]);
end
save('image', num2str(i),'.jpg');
Error:
Operator '.^' is not supported for operands of type 'struct'.
Error in image_recon (line 6)
I(:,i) = reshape(sqrt(a_imag(:,i).^2+a_real(:,i).^2),[128,128]);

Accepted Answer

Matt J
Matt J on 22 Sep 2022
Edited: Matt J on 22 Sep 2022
What is the name of the variable stored inside the .mat files? If I assume it is X, then,
a_real = load("img_real.mat").X;
a_imag = load("img_imag.mat").X;
  9 Comments
Matt J
Matt J on 25 Sep 2022
Edited: Matt J on 25 Sep 2022
a_real = load("img_real.mat").img_real;
a_imag = load("img_imag.mat").img_imag;
I = reshape( sqrt(a_imag.^2+a_real.^2), 128,128,[]);
N=size(I,3);
filenames="image"+(1:N)+".jpg";
for i=1:N
imwrite(I(:,:,i),filenames(i));
end
a = imread('image99.jpg');

Sign in to comment.

More Answers (0)

Categories

Find more on Images in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!