2014-02-25 62 views
1

在我的MATLAB代碼中,我想保存所有矢量的迭代數據,其中每個時間步進循環(依時間而定)都要重新計算。我非常困惑,試圖找到最好的方式來做到這一點。我試圖保存在一個mat文件中,但我只獲取最後一個值。我必須製作矩陣嗎?並保存我的載體(1行100列)到每一行?那麼,我將不得不在這個矩陣中有最大的行時間步長?有其他解決方案嗎?時間循環 - 將矢量數據存儲在文件中而不會覆蓋

+0

一些示例代碼或您迄今爲止所做的工作將會很有用。 – Marcin

+0

您可能正在尋找['save('myfile.mat','myvec','-append');'](http://www.mathworks.com/help/matlab/ref/save.html),但正如Marcin所說,發佈一些代碼可以更容易地回答你的問題。 – Praetorian

+0

我試圖發佈我的代碼樣本,但我不能。 -append解決方案不起作用。每個循環都重新定義我的向量。我需要創建一個新的矩陣,其中原始數據將是每個時間步的值。我不知道怎麼做。 – user1640255

回答

1

mat文件不能包含具有相同名稱的兩個變量。您需要在每次迭代中爲您保存的變量賦予一個新名稱,否則它只會覆蓋mat文件中相同名稱的變量。

最簡單的方法是使用MATLAB結構的動態字段名語法在名稱中使用迭代索引在結構中創建新字段。然後可以使用save-struct選項將該字段直接保存到mat文件(無父結構)。

for a = 1:100 
    A = rand(10);     % Compute output to be saved here 
    s.(sprintf('iter%d', a)) = A; % Save it to a new variable in a structure 
    save('myfile.mat', '-struct', 's', '-append'); % Append to your mat file 
    clear s      % Clear the structure 
end 
相關問題