Richard
Richard

Reputation: 189

append cell row to matrix

I'm reading an excelfile in matlab with

[NUM,TXT,RAW]=xlsread(DATENEXCEL,sSheet_Data);

In the excelfile are different datamatrices in different sheets in the following form

Date    Firm1 Firm2 Firm3  ...
1.1.16  12    12    12
...     ...   ...   ...

Currently I'm handling the pure data with the NUM object and the header row with the TXT object. My first issue is how to combine the header row with the data rows. Looping does not work, since I predefine the data matrix with

daten=zeros([length(sDatesequence) size(RAW,2)]);

because I want to be able to add more data from different sources to that object. Predefining with zeros, however, leads Matlab to expect doubles and not characters. Converting the cell array TXT with cell2mat delivers unsatisfying results:

cell2mat(TXT(1,:))=Firm1Firm2Firm3...

hence only a long string vector.

Question: Is there another way to combine character vectors and double matrices?

Regards, Richard

Upvotes: 0

Views: 77

Answers (1)

Gelliant
Gelliant

Reputation: 1845

You can combine them in a cell array.

c{1,1} = 'Firm1';
c{1,2} = datavector;
c{2,1} = 'Firm2';
c{2,2} = datavector;

But as far as I know it is not possible to add text headers to a numerical matrix, unless you do something with typcasting. But I would not recommend that.

d(1:8)='Firm1   '; %must have exactly eight characters (a double has a length of 8 bytes)
y = typecast(uint8(d),'double') %now you have a number that would fit in a matrix of doubles
x=char(typecast(y,'uint8')) %now it's converted back to text

Upvotes: 1

Related Questions