Adding values to a variable in a loop?

조회 수: 6 (최근 30일)
Jessica
Jessica 2014년 7월 17일
댓글: Matz Johansson Bergström 2014년 7월 17일
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.

답변 (1개)

Matz Johansson Bergström
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
Jessica
Jessica 2014년 7월 17일
That probably would have worked. Thank you.
>> class(pixel_data(1))
ans =
cell
>> class(pixel_data{1})
ans =
uint16
However, I came up with a new little bit of code.
channel1=[channel1;pixel_data(i,1)];
channel2=[channel2;pixel_data(i+1,1)];
channel3=[channel3;pixel_data(i+2,1)];
i=i+3;
This worked for what I was trying to do
Matz Johansson Bergström
Matz Johansson Bergström 2014년 7월 17일
Would you kindly accept my answer?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Images에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by