我的数据存储在“Matlab工作空间”中,格式如下:
data =
Columns 1 through 12
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
我希望将其转换为这种简单形式:
-1-1-1-1-1-1-1-1-1-1-1-1
甚至以这种形式也可以接受:
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
输出数据旨在等于此命令的结果:
Str =(' - 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1');
最初我有以下格式的数据“type = Double”:
-1
-1
-1
-1
-1
-1
-1
-1
-1
我使用以下命令将此类型的双数据保存到变量中:
save data.txt data
然后我使用以下代码将此数据导入我的.mat文件中以进行进一步操作:
str = uiimport(); % import data
str = sprintf('%g', str); % or mat2str(str)
由此产生的数据类型虽然是char类型,但它是我需要的数据类型,以使其进一步处理。但它不起作用。但是,如果我直接将此数据放在我的.mat文件中为str =(' - 1 -1 -1 -1 - 1');它有效。
答案 0 :(得分:2)
我很难弄清楚为什么你提到num2str
或sprintf
没有工作。我想你试图直接将uiimport
的输出传递给num2str
或sprintf
。这会给您以下错误。将此问题包含在您的问题中会非常有帮助。
使用sprintf时出错 函数未定义为' struct'输入。
uiimport
的输出是一个结构,所有结果变量都是字段。因此,您需要解决此结构中的data
- 字段,如下所示:S.data
。
以下是代码:
data = [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]'
save data.txt data % store data
S = uiimport(); % import data
str = sprintf('%g', S.data) % without spaces
str = sprintf('%g ', S.data) % with spaces
结果如下:
data =
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
str =
-1-1-1-1-1-1-1-1-1-1-1-1
str =
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1