structure containing empty string arrays

4 次查看(过去 30 天)
Hi, I'm using a structure to hold some text data. The fields of the structure are initialised as cells. However it seems that if the field is left empty then the value is converted to a double meaning I can't consistently index that value. Do I need to specifically test each value or is there a better way? Thanks
x=struct('a',{},'b',{});
x(1).a={'abc' 'bbc'};
x(1).b={'cbc'};
x(2).a={'dbc'};
for iloc=1:2
sprintf('%s,%s\n',...
x(iloc).a{:},...
x(iloc).b{:})
end

回答(2 个)

Azzi Abdelmalek
Azzi Abdelmalek 2013-2-19
编辑:Azzi Abdelmalek 2013-2-19
You can use
x=struct('a',{''},'b',{''});
Edit
n=10;
v=arrayfun(@(x) {''},1:n,'un',0)
a=struct('a',v,'b',v)
  5 个评论
Tom Wright
Tom Wright 2013-2-19
Hmm, just spotted a typo in my original question, now corrected. I can't preallocate the structure completely since I don't know how many values I'm going to find. The solution
x=struct('a',{'','',''},'b',{'','',''});
also doesn't work as required
type(x(2).b) = char
Azzi Abdelmalek
Azzi Abdelmalek 2013-2-19
编辑:Azzi Abdelmalek 2013-2-19
Ok, use this, it should work
n=10;
v=arrayfun(@(x) {''},1:n,'un',0)
a=struct('a',v,'b',v)

请先登录,再进行评论。


Sean de Wolski
Sean de Wolski 2013-2-19
编辑:Sean de Wolski 2013-2-19
You should be able to use repmat() to create a cell array of empty strings:
C = repmat({''},10,10)
And then feed this into the struct() constructor.

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by