Reshape array for 256 by 256 matrix showing 16 by 256
    9 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
I have 65536 real data points saved from an image. I have used reshape command to make square matrix. But result I am getting is 16 by 256 . Why is it so? Can I reconstruct the image ??
 a = load('fname.txt');
 y=reshape (a,256,256)
but instead of 256 by 256 it is showing 16 by 256
5 Kommentare
  George Papas
 am 28 Jun. 2013
				Hi Sudipta! Have you tried to use the command double before resizing? As far as I understood you would like to resize your image.
1) So, from the beginning, first you can get the file:
[Get_file,Get_pathname]=uigetfile;
2) Then it is very important to read and double it:
Temp_Image=double(dicomread(fullfile(Get_pathname,Get_file)));
3) At the end you can resize it:
 Image=imresize(Temp_Image,resizefactor);
I think the most important thing is to double the image before any further post-processing step.
I hope that helps,
Giorgos
Akzeptierte Antwort
  Ahmed A. Selman
      
 am 28 Jun. 2013
        Dear sudipta,
I have downloaded your data file, and went like
a=load('1372387722318.txt');
y=reshape (a,256,256);
whos 
Name          Size              Bytes  Class     Attributes
a         65536x1              524288  double              
y           256x256            524288  double
and everything is just fine to me. So, the only possible error is that: you have another file with a name (fname.txt) in your directory which is not the same file you uploaded (1372387722318.txt). Check this out and I'm pretty sure you'll have it working.
Regards
0 Kommentare
Weitere Antworten (3)
  Jan
      
      
 am 28 Jun. 2013
        
      Bearbeitet: Jan
      
      
 am 28 Jun. 2013
  
      It is impossible that Matlab's reshape changes the number of elements of the processed array. Therefore I'm convinced, that something completely different went wrong:
- You do not read the file your assume to read
- "It is showing 16 by 256" does not explain, how you check the size. Perhaps the bug is found in your method to obtain the array size.
- You do not use Matlab's reshape but a user-defined function. Check this by:
which reshape -all
0 Kommentare
  Anand
    
 am 27 Jun. 2013
        This is what you should do for an image with 65536 pixels that you want to make square:
nelem = numel(A);
side  = sqrt(nelem);
Areshaped = reshape(A,side,side);
  David Sanchez
      
 am 28 Jun. 2013
        To reshape/resize an image, use:
imresize
Type:
help imresize
Or
doc imresize
for all the information needed to handle the issue.
0 Kommentare
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!







