首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将包含不同长度向量的单元格保存到文本文件中

将包含不同长度向量的单元格保存到文本文件中
EN

Stack Overflow用户
提问于 2016-05-12 15:52:38
回答 2查看 385关注 0票数 1

我试图将包含不同长度列向量的单元格数组保存到MATLAB中的文本文件中,但我有点卡住了。

代码语言:javascript
运行
复制
cell_structure = {[1;2;3;...546] [1;2;3;...800] [1;2;3;...1011] [1;2;3;...1118] [1;2;3;...1678]}

我尝试使用以下代码:

代码语言:javascript
运行
复制
   fid = fopen( 'myFile.txt', 'w' ) ;
 for cId = 1 : numel( cell_structure )
    fprintf( fid, '%f ', cell_structure{cId} ) ;
    fprintf( fid, '\r\n' ) ;
 end

问题是当我打开文本文件时,列向量被保存为行向量,并且它们的长度限制在545。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-12 18:33:59

我使用了以利亚·罗克斯的想法,把较短的列矢量移出,所以它们都是一样长的。克劳利指出,dmlwrite和cvswrite不能处理空单元格。我找到了一个可以处理空单元格的函数:

https://github.com/mkoohafkan/UCBcode-Matlab/blob/master/OtherPeoplesFunctions/dlmcell.m

这是我的代码,用来填充和保存数据。

代码语言:javascript
运行
复制
    for k = 1:max(cellfun('length',cell)); %longest column vector length
    for j = 1:length(cell); % number of colum vctors
        if k > length(cell{j}); % if the index is longer than colum vector length
           new_cell{k,j} = []; % pad vector
        else
         new_cell{k,j} = cell{j}(k); %otherwise add to array
        end
    end
end
dlmcell('test.txt',new_cell,',')

它的工作原理就像符符一样,单元格数组中的所有列向量现在都保存在文本文件的单独列中。

票数 1
EN

Stack Overflow用户

发布于 2016-05-12 16:22:15

for循环的第一次迭代以cell_structure格式打印整个第一个数组。这个数组是行还是列向量并不重要,因为您使用的是fprintf(),它将逐个打印出每个元素。

这比我现在在工作中所能应付的更棘手.但是你需要把你的更短的向量与你最大的长度相匹配。

然后:

代码语言:javascript
运行
复制
for k = 1:size_of_largest_vector
    for j = 1:total_number_of_columns
         new_cell{k,j} = cell_structure{j}(k)
    end
end

这将为您提供所有列向量的数组。

然后,使用以空格分隔的csvwrite()来编写列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37191870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档