2015-04-15 3 views
0

У меня есть цикл, который выполняется 100 раз. На каждой итерации есть string, double и назначенный table, а в следующей итерации для них назначаются новые значения. Я хочу сделать это, чтобы скопировать эти значения и после завершения цикла сохранить итоговый результат как result.mat, используя функцию matlab save. Я попытался помещать их в массив ячеек, но пока он не работает, поэтому, если кто-нибудь может проконсультировать, как это можно сделать.Сохраните строку, двойную и таблицу Matlab

Это то, что я сделал:

results_cell=(100,3); 
. 
. 
. 
results_cell(i,1)=stringA; 
results_cell(i,2)=TableA; 
results_cell(i,3)=DoubleA; 

Но это дает эту ошибку Coversion to Cell from Table is not possible. Таким образом, я попытался преобразовать TableA в массив двойников с помощью table2array, но я все еще получаю эту Coversion to Cell from Double is not possible

+1

Почему это не работает? Можете ли вы показать нам простой фрагмент кода, который воспроизводит проблему? – David

+0

Не могли бы вы использовать структуру для хранения всех этих типов данных? Думаю, это было бы намного проще. –

+0

@ Benoit_11 вы можете мне показать, как? – Tak

ответ

2

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

Например, назовем структуру Results. Вы можете инициализировать его так.

Results = struct('StringData',[],'TableData',[],'DoubleData',[]) 

Так как вы знаете, его размеры, вы можете даже сделать это:

N = 100; 
Results(N).StringData = []; 
Results(N).TableData = []; 
Results(N).DoubleData = []; 

Это автоматически создает структуру 1xN с 3-мя полями.

Затем в цикле вы можете назначить каждое поле и связанные с ним данные следующим образом:

for k = 1:N 

    Results(k).StringData = String(k); 
    Results(k).TableData = Table(k); 
    Results(k).DoubleData = Double(k); 

end 

где String(k), Table(k) и Double(k) только общие названия для ваших фактических данных.

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

Для того, чтобы сохранить файл .mat, использовать что-то вроде этого:

save SomeFileName.mat Results 

Что вы можете загрузить в рабочую область, как вы бы с любым .mat файла:

Например:

S = load('SomeFileName.mat') 

R = S.Results 

Надеюсь, что это поможет!

+0

@ Benoit_11 почему строка сохраняется с одной цитатой? – Tak

+0

Mhh Я не понимаю, что вы имеете в виду. Где именно? –

+0

stringA Я сохраняю ячейку, поэтому у нее есть одиночные кавычки, я не хочу сохранять одиночные кавычки в result_struct, я пытался использовать char (stringA), но все же он сохраняется с одинарными кавычками, есть ли у вас какие-либо совет? – Tak