fprintf со смесью строк и чисел - PullRequest
1 голос
/ 01 марта 2012

Я хотел бы создать текстовый файл, который содержит смесь строк и чисел.Пример выглядит следующим образом:

clear all
fakeData = @(location) struct('Location',location,'AirT',rand(320,1),'SolRad',rand(320,1),'Rain',rand(320,1));
  s(1) = fakeData('England');
  s(2) = fakeData('Wales');
  s(3) = fakeData('Scotland');
  s(4) = fakeData('Ireland');
FieldName = {s.Location};
R = corrcoef([s.AirT],'rows','pairwise');
R_Values = [FieldName(nchoosek(1:size(R,1),2)) num2cell(nonzeros(tril(R,-1)))];
MeanCorr = mean(cell2mat(R_Values(:,3)));
Headings = {'L1','L2','Correlation'};
R_Values1 = [Headings;R_Values];
R_Values1 = [R_Values1; {'','Mean',MeanCorr}];

Чтобы напечатать R_Values, я просто набрал бы:

 for i=11:length(R_Values);
fprintf(1,'%12s\t%12s\t%9.6f\n',R_Values{i,1},R_Values{i,2},R_Values{i,3})
  end

Однако при попытке сделать это для R_Values1 у меня не получается, я не уверен, какчтобы разрешить другой формат в первой и последней строке R_Values1.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2014

В MATLAB: чтобы записать строки и числа в одном файле, вам нужно

1) преобразовать число в форматированную строку, используя sprintf

2) конкатить все строки

3) используйте fprintf для записи в файл

Пример: вы хотите записать строки массива Nx1 и номера массивов Nx1 в Fileout.txt

    % define output file and clean old versions:
    fileout='Fileout.txt'
    system(['rm -f ' fileout]);

    % open output file in the 'a'ppend mode
    fid=fopen(fileout,'a');

    % loop over all lines of both arrays:
    for i= 1:size(Numbers,1)
        s = sprintf('%10.3f',Numbers(i));
        fprintf(fid,'%s\n',[Strings(i,:) s]);
    end
1 голос
/ 02 марта 2012

Поскольку строка заголовка имеет другой формат, чем строки данных, я вижу два варианта.

  1. печатать строку заголовка с отдельным оператором fprintf или;
  2. используйте xlswrite для записи массива ячеек R_Values1 в файл. Согласно документации MATLAB xlswrite создаст файл CSV, если Excel недоступен, в противном случае он создаст файл Excel, который может не работать для вас.

Возможно, у других могут быть разные предложения по обработке строки заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...