How to append data for a variable column in a matrix?

4 visualizzazioni (ultimi 30 giorni)
I load an excel sheet using xlsread command. The excel sheet can have any number of rows and columns.
Example of the matrix (3*2)from the excel sheet will look like this:
System Code
AEA AEA00
AW WP000
The above matrix can have any length. Based on the column dimension, I want to concatenate the rows with a '-'. For e.g. the second row after concatenation can look like AEA-AEA00.
Could you suggest a way out for implementing the same?

Risposta accettata

Cedric
Cedric il 30 Apr 2014
Modificato: Cedric il 30 Apr 2014
Assuming
D = {'AEA', 'AEA00'; 'AW', 'WP000'}
you can concatenate e.g. row 1 with
>> sprintf( '%s-', D{1,:} )
ans =
AEA-AEA00-
and remove the last dash afterwards. For performing this on the whole array:
nRows = size( D, 1 ) ;
Dcat = cell( nRows, 1 ) ;
for k = 1 : nRows
tmp = sprintf( '%s-', D{k,:} ) ;
Dcat{k} = tmp(1:end-1) ;
end
This works with an arbitrary number of rows and columns. In the present case, it outputs
>> Dcat
Dcat =
'AEA-AEA00'
'AW-WP000'
Notes:
  • You might want to truncate the first row if it contains 'System Code'.
  • This solution assumes that each row has the same number of non-empty columns. Let me know if it isn't the case; it is easy to add a line which selects only non-empty cells before the call to SPRINTF.
  6 Commenti
Ashish
Ashish il 30 Apr 2014
Perfect!
Thanks for the example and understanding my doubt clearly.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by