Reshape array for 256 by 256 matrix showing 16 by 256
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
George Papas
2013-6-28
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
采纳的回答
Ahmed A. Selman
2013-6-28
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 个评论
更多回答(3 个)
Jan
2013-6-28
编辑:Jan
2013-6-28
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 个评论
Anand
2013-6-27
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
2013-6-28
To reshape/resize an image, use:
imresize
Type:
help imresize
Or
doc imresize
for all the information needed to handle the issue.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!