Filter löschen
Filter löschen

using xlsread for cell variable

1 Ansicht (letzte 30 Tage)
Yona
Yona am 24 Dez. 2014
Bearbeitet: Linda Cianciolo am 1 Jan. 2015
I have a data store in .csv files. in the data i have vector of number that i want get in cell not in string (and some more data that i want in separate cell). because the vectors are not in same length i don't want it to be numbers.
Can we use xlsread or other function and store cell variable (in cell matrix)? If not what is the easiest way (format?) to store the data in csv file to change it in matlab from string/array to cell variable?
example file is attached
  1 Kommentar
Linda Cianciolo
Linda Cianciolo am 1 Jan. 2015
Bearbeitet: Linda Cianciolo am 1 Jan. 2015
Lets try the following, I hope this can help:
function C = claimReader()
inp = csv2struct(['C:\Documents and Settings\nkulczy\My Documents\085 Starry Sky\','Starry_Sky_inputs_vert.csv']);
inputTitles = [{'Output_Dir'};{'Claimz'};{'Prodz'};{'Fault_Locations'};{'Fault_Type'};{'Primary_Failed_Part'};{'Part_Group'};{'Selected_SEAG'};{'Change_Point'};{'Date_Compile'};{'Minimum_Date'}];
claim = inp.(cell2mat(inputTitles(2))); %returns a file path/location string
C = csv2struct(claim);
end
function Out = csv2struct(filename)
%%read xls file with a single header row
[~, ~, raw] = xlsread(filename);
[~ , ~, ext] = fileparts(filename);
if ~strcmpi(ext, '.csv') %convert non .csv files to .csv, so blanks stay blank
filename=[pwd,'tempcsv',datestr(now,'yymmddHHMMSSFFF'),'.csv'];
xlswrite(filename,raw);
[~ , ~, raw] = xlsread(filename);
delete(filename);
end
if size(raw,1)==11 && size(raw,2)==2 %transpose SS inputs (must match dimensions of input matrix EXACTLY!!!)
raw = raw';
end
nRow = size(raw,1);
nCol = size(raw,2);
header = raw(1,:);
raw(1,:) = [];
end

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Image Analyst
Image Analyst am 24 Dez. 2014
I don't quite understand the question, but I'll take a guess. You can use csvread() to read in your data file, and xlswrite() to write it out to an Excel workbook. Does that answer the question?
  5 Kommentare
Image Analyst
Image Analyst am 30 Dez. 2014
Try this:
[xd, ~, xcell]=xlsread('example2.csv');
[rows, columns] = size(xcell)
for row = 1 : rows
% Extract string.
str = char(xcell(row, 3));
% Get rid of brackets
str = str(2:end-1);
% Turn into numbers and put in cell
column3{row} = sscanf(str, '%d, ');
end
% Display the cells
celldisp(column3)
column3
Yona
Yona am 1 Jan. 2015
tnx

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Ilham Hardy
Ilham Hardy am 30 Dez. 2014
In a very different approach,
Use
textscan
instead of
slxread or csvread

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by