2015-07-07 3 views
-1

Итак, у меня есть две переменные - события 12x1, тип 12x1. которые выглядят следующим образом;Matlab: Форматирование массива

Events = 
    13.0850 
    15.1860 
    20.1470 
    24.3080 
    27.3030 
    29.4180 
    33.2930 
    36.3710 
    38.7080 
    42.4300 
    44.6670 
    46.9640 

type = 
    'control' 
    'control' 
    'control' 
    'control' 
    'control' 
    'control' 
    'control' 
    'control' 
    'control' 
    'control' 
    'control' 
    'control' 

Я хочу написать следующее в файл (.txt), который заголовочные имена переменных с их значениями под ними. Или я могу просто конкатенировать массив ячеек с числовым двойным массивом и записать в файл?

+0

И, пожалуйста, кто-нибудь скажет мне, как мне сформировать массив, который выглядит как A = [1 2 1 2 1 2 1 2 1 2], не используя петли, пожалуйста, –

+1

Это другой вопрос. Йо может опубликовать это как новый вопрос. Но убедитесь, что вы правильно указали проблему. В примере массива не указано правило, с помощью которого вы хотите создать эти массивы. Это два повторяющихся числа? Или не всегда два? Всегда ли цифры всегда подряд? ...? –

+0

@ LuisMendo Конечно! Не могли бы вы помочь мне решить этот вопрос:/ –

ответ

0

По крайней мере, в последних выпусках MATLAB самый простой способ - свести переменные вместе в таблицу, а затем выписать таблицу.

>> myevents = [1;2;3] 
myevents = 
    1 
    2 
    3 
>> mytypes = {'control';'control';'control'} 
mytypes = 
    'control' 
    'control' 
    'control' 
>> t = table(myevents, mytypes) 
t = 
    myevents  mytypes 
    ________ _________ 
    1   'control' 
    2   'control' 
    3   'control' 
>> writetable(t,'myfile.csv') 
>> type('myfile.csv') % Display contents of the file just created 

myevents,mytypes 
1,control 
2,control 
3,control 

table был введен в R2013b. До этого релиза самым простым способом является использование функций нижнего уровня, таких как fprintf, для записи файла напрямую.


Edit: Если у вас есть версия старше R2013b, вы можете использовать что-то вроде следующего:

fid = fopen('myfile.csv','w'); 
for i = 1:numel(myevents) 
    fprintf(fid, '%f,%s\n', myevents(i), mytypes{i}); 
end 
fclose(fid); 

>> type('myfile.csv') 

myevents,mytypes 
1.000000,control 
2.000000,control 
3.000000,control 

Используйте спецификаторы формата (например, %f, %s), чтобы указать выход формат для чисел. См. doc fprintf, чтобы найти информацию о них.

+0

У меня есть r2011b, может, пожалуйста, покажите мне, как это сделать с fprintf? Я использовал fprintf (fid, '% f% f% c \ n', Events, position, type); но он говорит мне, что fprintf не может использоваться для ячейки –

+0

@HarshSharma См. мое редактирование. –

+0

Спасибо большое! –

Смежные вопросы