Create an empty array of size (MxN) for xlswrite.

I have an Image which is 1944® x 2592 (C). I would like to take one column at a time; treating each column as an Image and calculate how many pixels among each row of that column contains value > half(max) value of that column. Those number of pixels are to be written to the excel sheet corresponding to it's respective column.
Image: Image
Here is what I have tried so far, I am not able to write it successfully.
clc;
sig = rgb2gray(imread('1.bmp')); % read in the image.
% imshow(sig);
ArraySize = size(sig); %1944(R) x 2592 (C)
[maxval, maxloc] = max(sig(:)); % Gives the max and the location
maxval; % max value
[maxloc_row, maxloc_col] = ind2sub(size(sig), maxloc); % convert logical
%-------------------------------------------------------------------%
% Count pixels through each column > half(max) value of that column
%-------------------------------------------------------------------%
newfilename = 'Results.csv'; % write new values to .csv files
Array = zeros(2592,2592);
% % R = Array(:,1);
% y = Array(:,2);
for a = 1: 2592% maxloc_row = 635 maxloc_col = 1094
[a_maxval, a_maxloc] = max(sig(:,a)); % search max among every column.
% maxloc is the row at which maxval is.
newval = a_maxval/2; % averaged max value
% New structure for find width
x = 0;
x = Array(:, 1);
for b = 1: 1944 % maxloc_row = 635 maxloc_col = 1094
% R = b;
if sig(b,a) > newval
x=x+1;
end
end % End row search
x;
% y = x*(2.2); % pixels into microns
output = [num2cell(x)];
xlswrite(newfilename, output);
end % End column search

回答 (4 件)

James Tursa
James Tursa 2015 年 6 月 22 日
編集済み: James Tursa 2015 年 6 月 22 日

0 投票

If an array has size 2592 x 2, then it is not empty. An empty array has at least one dimension that has size 0. If you mean create an array with zeros, then
Array = zeros(2592,2);

1 件のコメント

Abhilash Sukumari
Abhilash Sukumari 2015 年 6 月 22 日
No, I just want to initialize an array with dimensions: 2592 x 2

サインインしてコメントする。

Chad Greene
Chad Greene 2015 年 6 月 22 日

0 投票

Try
Array = NaN(2592,2) ;

1 件のコメント

Abhilash Sukumari
Abhilash Sukumari 2015 年 6 月 22 日
I am later using xls write to write values into the array created by NaN, it would only write NaN. That is my problem. Let me edit the question to what I am trying to do.

サインインしてコメントする。

Jeremy
Jeremy 2015 年 6 月 22 日

0 投票

If you are writing to excel then you probably want to use a cell array,
Array = cell(2592,2);

1 件のコメント

Abhilash Sukumari
Abhilash Sukumari 2015 年 6 月 22 日
Please have a look at the script. I am trying to write the x values to the excel. However, the final out in excel seems to show wrong with only one constant value in all 2592 rows.

サインインしてコメントする。

Image Analyst
Image Analyst 2015 年 6 月 22 日

0 投票

I'm surprised this even finished! You definitely don't want to call xlswrite 2592 times or it will take hours. Perhaps you opened up Excel to look at it after only a few of the calls to xlswrite had been executed.
You should create a 2D matrix for output and then put a single call to xlswrite after both "a" and "b" loops have finished.
Other problems: your (badly-named) x is just column 1 of Array every time. And you don't even need the loop over b because you can use the sum function: sum(x>newval) to count the number of pixels more than the half max value (which you chose the poor, non-descriptive name of newval for).

カテゴリ

ヘルプ センター および File ExchangeMultidimensional Arrays についてさらに検索

タグ

質問済み:

2015 年 6 月 22 日

回答済み:

2015 年 6 月 22 日

Community Treasure Hunt

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

Start Hunting!

Translated by