check cell's contents and convert to matrix
Mostrar comentarios más antiguos
i have a data cell as below:
when i use
param1=cell2mat(data(:,2));
param2=cell2mat(data(:,6));
param3=cell2mat(data(:,7));
it gives error:
??? Error using ==> cell2mat at 47
All contents of the input cell array must be of the same data type.
So, every time there is a string in cell matrix MATLAB Gives error and i correct it by hand.
Is there a method that makes this:
param1=cell2mat(data(:,2));
If one of the members of cell is string, than assign that to value of zero??
Thank you very much
5 comentarios
Jan
el 27 de Mayo de 2011
I do not see a picture at the shown link.
An example could be helpful, e.g. {1,2,3,'String'} ?
Walter Roberson
el 27 de Mayo de 2011
I didn't either at first, but then realized it was the table towards the top right.
Jan
el 27 de Mayo de 2011
I tried it again without success. I see some GUI objects, "Images You'll also enjoy", some Tools on the left bottom. After I hit the "Next" button, a picture of a male human appeared in frontal plane - without cloths. I'm not sure if this should encourage me to disable the NoScript filter...
I do not find a table and I do think that TinyPic is junk.
Walter Roberson
el 27 de Mayo de 2011
For me it appears in the section underneath "click to add tags". I had to temporarily allow tinypic.com but I did not have to allow any of the other sites the page wants (photobucket, gigya, z25, or others.)
http://oi56.tinypic.com/33ylu1z.jpg
should be the direct link.
Jan
el 28 de Mayo de 2011
Thanks Walter! Following your link I can see the table without any tricks. This is another argument to host pictures on a Mathworks server.
Respuesta aceptada
Más respuestas (6)
Jan
el 27 de Mayo de 2011
data(cellfun('isclass', data, 'char')) = {0}
Walter Roberson
el 27 de Mayo de 2011
param1 = cellfun(@(c) isnumeric(c) * c(1),data(:,2))
1 comentario
Walter Roberson
el 27 de Mayo de 2011
Note: this also does the conversion from cell to array.
Andrei Bobrov
el 28 de Mayo de 2011
idx = find(cellfun('isclass',data,'char'));
data(idx) = data(idx-1)
1 comentario
Walter Roberson
el 28 de Mayo de 2011
Close, but that won't work if there are several strings in a row.
ben harper
el 28 de Mayo de 2011
0 votos
ben harper
el 29 de Mayo de 2011
Laura Proctor
el 31 de Mayo de 2011
Are you guaranteed that there will not be two adjacent string values in the input matrix?
If so, then this should work for you:
if indices(1)
data(1,2) = data(2,2);
indices(1) = 0;
end
data(indices) = data([indices(2:end) 0]);
Categorías
Más información sobre Cell Arrays en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!