来自Matlab工作空间的数据格式

时间:2015-07-12 02:34:46

标签: matlab

我的数据存储在“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');它有效。

1 个答案:

答案 0 :(得分:2)

原因

我很难弄清楚为什么你提到num2strsprintf没有工作。我想你试图直接将uiimport的输出传递给num2strsprintf。这会给您以下错误。将此问题包含在您的问题中会非常有帮助。

  

使用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