如何将多个数据保存在一个文本文件中

Posted

技术标签:

【中文标题】如何将多个数据保存在一个文本文件中【英文标题】:How to save multiple data in one text file 【发布时间】:2016-02-18 07:18:08 【问题描述】:

我想将多个对象的高度和宽度值保存在一个文本文件中,但它只保存了最后处理的图像数据。这是我的代码:

contents = get(hObject,'Value')
pilih=guidata(gcbo);
theImage1=getImage(handles.axes1);
theImage2=getImage(handles.axes2);
theImage3=getImage(handles.axes3);
theImage4=getImage(handles.axes4);
theImage5=getImage(handles.axes5);

for z = 1:5;
    Img = theImagez;
    abu=rgb2gray(Img);
    cb=imclearborder(abu);
    thresh=graythresh(cb);
    b=im2bw(cb,thresh);
    bw=bwareaopen(b,60);
    bwfill=imfill(bw,'holes');
    s=regionprops(bwfill,'BoundingBox');
    objects=cell(numel(s),1);
    for idx=1:numel(s)

        bb=floor(s(idx).BoundingBox);
        out=bsxfun(@times,Img,uint8(bwfill));
        objectsidx=out(bb(2):bb(2)+bb(4),bb(1):bb(1)+bb(3),:);
    end
        X = zeros(3, numel(objects));
            for k = 1:numel(objects)
                k1=objectsk;
                c1=rgb2gray(k1);
                t1=graythresh(c1);
                biner1=im2bw(c1,t1);
                [height,width]=size(biner1);
                a1=bwarea(biner1);
                X(:,k)=[height;width;a1];
            end
end

save grading/datauji.txt X -ascii;

我该怎么办?非常感谢你。这是我的图像。有5个,我想把所有对象的高度和宽度数据保存在一个txt文件中。

【问题讨论】:

【参考方案1】:

试试这个代码,

代码

numel = 100;
file = fopen('ans.txt','w');
testdata = rand(3, numel);
X = zeros(3, numel);
for i=1:numel
    X(:,i) = testdata(:,i);

    fprintf(file,'%ld %ld %ld\n', X(1,i), X(2,i), X(3,i));
end

fclose(file);

我创建了一个虚拟数据点数,即 100。我在“testdata”的变量中创建了随机数据,然后我迭代了“numel”,每次保存时都以逗号分隔类型保存了所有 3 个数据

ans.txt

11.0 2.2 3.1 
4.2 5.2 1.1
32.1 542 12.1
12. 12 23

希望这行得通。

【讨论】:

我试过并得到这个错误信息:???索引超出矩阵维度。 ==> guikedelaizulfa>ekstrakfitur_Callback 在 1158 处出错 fprintf(file,'%ld %ld %ld\n', X(height), X(width), X(a1)); ==> gui_mainfcn 中的错误 96 feval(varargin:); ==> guikedelaizulfa 中的错误 42 gui_mainfcn(gui_State, varargin:); ==> @(hObject,eventdata)guikedelaizulfa('ekstrakfitur_Callback',hObject,eventdata,guidata(hObject)) 中的错误???评估 uicontrol 回调时出错 不能使用 fprintf(file,'%ld %ld %ld\n', X(height), X(width), X(a1));,会报错,如 X超出矩阵限制。试试这个。 fprintf(file,'%ld %ld %ld\n', height, width, a1);fprintf(file,'%ld %ld %ld\n', X(1,k), X(2,k), X(3,k)); 原样。 我试过你的建议,但它只保存了 1x25 矩阵(由高度、宽度和 a1 组成)数据,而应该有 3x60(高度;宽度;a1)。我将发布我的图片作为您的参考 尝试将文件打开代码放在z loop之外,它应该在文本文件中保存 (z*numel)x3 矩阵

以上是关于如何将多个数据保存在一个文本文件中的主要内容,如果未能解决你的问题,请参考以下文章

将文本保存到多个文件中

如何将多个文件进行合并?

数据读取与保存

用户选择按钮时如何将数据保存在文本文件中

C# 将多个文本框保存到一个 .txt 文件中

如何在 Android 上将数据保存到文本文件?