Adding values to a variable in a loop?
8 次查看(过去 30 天)
显示 更早的评论
I'm having a problem putting data into a variable using a loop. I've never really worked with cell array's and they seem to be giving me problmes I'm working with z-stack confocal images and am looking to analyze the intensity within the cells. Right now I am just trying to put the data in appropriate matrices so that I can manipulate it later on.
Here is a run-down of the variable types.
ans gives 1x4 cell where the pixel and image data is in the first cell (which is the only thing I'm concerned with).
image_data gives a 135x2 cell as seen below
2048x2048 uint16 'C:\Users\Jessica\Desktop\GFP25_010.nd2; plane 1/135; C=1/3; T=1/45'
2048x2048 uint16 'C:\Users\Jessica\Desktop\GFP25_010.nd2; plane 2/135; C=2/3; T=1/45'
2048x2048 uint16 'C:\Users\Jessica\Desktop\GFP25_010.nd2; plane 3/135; C=3/3; T=1/45'
2048x2048 uint16 'C:\Users\Jessica\Desktop\GFP25_010.nd2; plane 4/135; C=1/3; T=2/45'
2048x2048 uint16 'C:\Users\Jessica\Desktop\GFP25_010.nd2; plane 5/135; C=2/3; T=2/45'
2048x2048 uint16 'C:\Users\Jessica\Desktop\GFP25_010.nd2; plane 6/135; C=3/3; T=2/45'
pixel_data is a 135x1 cell and is the first column of image_data
Below is my code. My problems is in the last little bit. I keep getting an error.
*Error message: The following error occurred converting from cell to double: Error using double. Conversion to double from cell is not possible.
Error in Image_Analysis (line 45) channel1(i,1)=pixel_data(i,1)*
%Data Analysis of Amount of Antibody Internalization in Cells
clc;
clear;
%Open Image
bfopen()
%Extract Image Data
image_data=ans{1,1};
%Create an Array focused on the pixel_data
pixel_data=image_data(:,1);
%Ask User How Many Laser Channels were used to Acquire the Image
total_laser_channels=input('How many laser channels were used to acquire this image?\n');
%Preallocate space and variables for each channel
if total_laser_channels==1
channel1=[];
elseif total_laser_channels==2
channel1=[];
channel2=[];
elseif total_laser_channels==3
channel1=[];
channel2=[];
channel3=[];
elseif total_laser_channels==4
channel1=[];
channel2=[];
channel3=[];
channel4=[];
else total_laser_channels==5
channel1=[];
channel2=[];
channel3=[];
channel4=[];
channel5=[];
end
%Loop: Each laser channel has corresponding images
i=1;
while i<length(pixel_data)+1
channel1(i,1)=pixel_data(i,1)
channel2(i-1,1)=pixel_data(i+1,1)
channel3(i-3,1)=pixel_data(i+2,1)
i=i+3;
end
To clarify what I'm trying to do with the loop. I want to know how many lasers were used. You'll notice in that in image_data C=1/3, 2/3, 3/3. These correspond to different laser channels. Thus I want to put the pixel_data of the corresponding laser channels into channel1 channel2 and channel3
Any help would be wonderful. Also any suggestions on my code would be great as well.
0 个评论
回答(1 个)
Matz Johansson Bergström
2014-7-17
It seems as though pixel_data(i,1) is still a cell. Have you tried pixel_data{i,1}?
If I try
pixel_data={1,4,7,8}
>class(pixel_data(1))
cell
>class(pixel_data{1})
double
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Extraction 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!