Access to the fits file channels

1 view (last 30 days)
Hello Folks,
I have this fits file of size(300,300,3) I would like to acces to each channel alone and write it. Using this code I can access only to the first channel but not to the second and third one. Any idea please.
stokes = fitsread('stokes1.fits');
Iu = stokes(:,:,1);
Ip = stokes(:,:,2);
Theta = stokes(:,:,3);
fitswrite([Iu,Ip,Theta],'stokes.fits')

Accepted Answer

Walter Roberson
Walter Roberson on 29 Jun 2021
info = fitsinfo('stokes1.fits');
Size = info.PrimaryData.Size;
nchan = Size(3);
parts = cell(1,nchan);
for channel = 1 : nchan
parts{channel} = fitsread(info, 'pixelregion', {[1 Size(1)], [1 Size(2)], [channel channel]})'
end
  4 Comments
Walter Roberson
Walter Roberson on 29 Jun 2021
I had misread about the option to use an info structure instead of a file name.
As usual I recommend making the filename a variable.
fitsfile = 'StokesParameters_Synthetic_Star_Gain_10.fits';
info = fitsinfo(fitsfile);
Size = info.PrimaryData.Size;
nchan = Size(3);
parts = cell(1,nchan);
for channel = 1 : nchan
parts{channel} = fitsread(fitsfile,'PixelRegion', {[1 Size(1)], [1 Size(2)], [channel channel]});
end
outdata = horzcat(parts{:});
fitswrite(outdata, 'stokes5.fits', 'Compression', 'rice');
assia assia
assia assia on 29 Jun 2021
Thank you for your feedback.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!