我有一个填充了十六进制数据的单元格数组c,当我在matlab提示符下键入c查看单元格内容时,它显示了刻度线之间的内容,即' 0x0009'。但是,一个元素用括号括起来,看起来像[650345]。如何将[]数据转换为' '数据?当我在这个特定元素上执行iscellstr时,matlab返回0. iscellstr为c的所有其他元素返回1.
我从excel那里将这些数据读入matlab,我担心excel能帮助他们做出贡献。我将一个十六进制值转换为科学记数法。就我所知,我无法改变excel的所作所为。我认为真正的价值已经消失,无法恢复。但我需要转换这个突出的值,即使不正确,就像其他单元格值一样,以便我可以继续处理。有什么建议吗?
答案 0 :(得分:0)
如果您知道错误值的索引及其真值,您只需:
c(idx) = {'0x0009'};
答案 1 :(得分:0)
我认为这可以满足您的需求:
ind = cellfun(@isnumeric, c); %// find numeric cells
c(ind) = cellfun(@(s) ['0x' dec2hex(s)], c(ind), 'uniformout', 0); %// convert to
%// hex string and prepend '0x'
示例:输入
c = {'0x0009', 650345};
产生输出
c =
'0x0009' '0x9EC69'