Matlab工作空间中的数据格式
我在“Matlab工作区”中存储了以下格式的数据:Matlab工作空间中的数据格式,matlab,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
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-1')
最初,我有一个数据格式为“type=Double”:
我使用以下命令将此类型的双精度数据保存到变量中:
save data.txt data
然后,我使用以下代码将此数据导入.mat文件以进行进一步操作:
str = uiimport(); % import data
str = sprintf('%g', str); % or mat2str(str)
由此产生的数据类型是虽然类型char,但这是我进一步处理它所需的数据类型。但它不起作用。但是,如果我直接将该数据作为str=('-1-1-1-1-1-1')放入.mat文件中;它起作用。原因
我很难理解为什么你提到num2str
或sprintf
不起作用。我认为您试图将uiimport
的输出直接传递给num2str
或sprintf
。这将导致下面的错误。在你的问题中包含这一点会很有帮助
使用sprintf时出错未为“struct”输入定义函数 解决方案
uiimport
的输出是一个结构,所有结果变量都作为字段。因此,您需要像这样处理此结构中的data
-字段:S.data
代码如下:
结果是:
num2str(值)和sprintf('%g',值)在我的情况下不起作用。num2str有什么问题?为什么您的输入有24个值,而预期的输出只有12个?您必须在这里帮助我们。你已经排除了两个完全合理的可能性,没有任何解释为什么它们是错误的。写一个好问题的一部分是展示你已经尝试了什么,以及为什么这些尝试没有产生预期的结果。@Daniel我只是将输出缩短为更少的1。所以它与编程逻辑无关。我只是用我的答案代替了你的问题。也许这个问题可以这样解决。它现在起作用了。但我不明白“.data”是一个函数,还是它只是表示与变量“data”中保存的数据的链接。因此,上面的语句可以概括为s=sprintf('%g',s.[变量名);]@user3022649
s
是一个结构,而data
是该结构的一个字段。它可以通过S.data
访问。查看有关结构以及如何使用结构的更多信息。
str = uiimport(); % import data
str = sprintf('%g', str); % or mat2str(str)
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