フィルターのクリア

How to save all outputs that are produced from each iteration in separated cell in one row of array and each row expresses an iteration then store it in one .mat file?

5 ビュー (過去 30 日間)
How to save all the output from each iteration in one .mat file?
Suppose we have the following program and I want to save Pd , C , M that are produced from each iteration in separated cell in one row of array and each row expresses an iteration then store it in one .mat file named Cases.mat.
Pd=[] ;
[Pd{1:7}]=ndgrid([0.5,1]);
Pd=reshape( cat(8,Pd{:}) ,[],7);
Pd = Pd'
for j = 1:size(Pd,2)
Pd(:,j)
C = 5*Pd(:,j)
M = 3*Pd(:,j)
end
Can Anyone help me to achive this?

採用された回答

Stephen23
Stephen23 2022 年 3 月 4 日
Pd = {};
[Pd{1:7}] = ndgrid([0.5,1]);
Pd = reshape(cat(8,Pd{:}),[],7).';
C = 5*Pd;
% M = your code is unclear
save('cases.mat','Pd','C')
  5 件のコメント
Stephen23
Stephen23 2022 年 3 月 4 日
編集済み: Stephen23 2022 年 3 月 4 日
The most efficient approach is NOT to store them as separate variables, but to store the data in matrices/arrays.
If you are generating the data in a loop then you can use indexing to assign the data to those matrices, just like you would use indexing to get data out of a matrix. For example:
Pd = {};
[Pd{1:7}] = ndgrid([0.5,1]);
Pd = reshape(cat(8,Pd{:}),[],7).';
S = size(Pd);
C = nan(S); % preallocate!
M = nan(S); % preallocate!
for k = 1:S(2)
C(:,k) = 5*Pd(:,k); % presumably your calculation is more complex
M(:,k) = 3*Pd(:,k); % presumably your calculation is more complex
end
save('cases.mat','Pd','C','M')
Of course in this example the loop is not required, as my answer already showed.
If you still really really want to store the data as vectors then store them in two cell arrays.
M
M 2022 年 3 月 4 日
Thank you so much @Stephen , your second code is working properly on my original code.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeVariables についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by