2013-08-22 3 views
1

Не могу понять, почему я получаю сообщение об ошибке при попытке форматирования моего файла определенным образом. Следующий код загружает мой файл правильно, но он загружает его как массив 12x1.Чтение в файле, правильная загрузка, но неправильная форматирование

disp(strcat('Navi_Endo_RefHomMat_', num2str(i), '.txt')) 
Navi_HomMat_File_ID = fopen(strcat('Navi_Endo_RefHomMat_', num2str(i), '.txt')); 
Navi_Endo_RefHomMat(i,:) = textscan(Navi_HomMat_File_ID,'%f'); 
fclose(Navi_HomMat_File_ID); 

Я хочу, чтобы он загружался как массив 3x4. Когда я пытаюсь делать следующее, я получаю ошибку «Назначение имеет более не-одноэлементные размеры RHS, чем не-одноплодные индексы»

disp(strcat('Navi_Endo_RefHomMat_', num2str(i), '.txt')) 
Navi_HomMat_File_ID = fopen(strcat('Navi_Endo_RefHomMat_', num2str(i), '.txt')); 
Navi_Endo_RefHomMat(i,:) = textscan(Navi_HomMat_File_ID,'%f %f %f %f'); 
fclose(Navi_HomMat_File_ID); 

Моего текстовый файл выглядит как этого

7.8466354e-01 -9.7684133e-02 -6.1201847e-01 -1.6701139e+01 
    4.6962973e-01 7.3803591e-01 4.8431043e-01 -2.0213967e+02 
    4.0442146e-01 -6.6750767e-01 6.2504598e-01 -1.7367594e+02 
    0.0000000e+00 0.0000000e+00 0.0000000e+00 1.0000000e+00 

Я знаю, что я мог бы легко меняйте мою переменную, меняя ее, чтобы получить 3x4, но я хочу прочитать ее правильно, не делая этого. Благодаря!

ответ

2

Попробуйте использовать эту строку:

Navi_Endo_RefHomCell = textscan(Navi_HomMat_File_ID, '%f %f %f %f'); 

Вы будете в конечном итоге с ячейкой Navi_Endo_RefHomCell, но вы можете использовать cell2mat, чтобы решить эту проблему.

+0

Я не уверен, что вижу разницу между тем, что вы предлагаете, и тем, что я пробовал во второй раз. Код, который я попробовал второй раз, - это второй код кода. Это похоже на то, что вы предлагаете ... но дает ошибку: «Назначение имеет больше не-одиночных размеров rhs, чем индексы, отличные от одиночных» – spaderdabomb

+0

О, nvm, я вижу, что вы просто пуля (я, :) вне, спасибо works =) – spaderdabomb