MATLAB Answers

Save data from for-loop and their use

4 views (last 30 days)
Hello,
I have the following problems. I have matrices: SatTrDatax_Norm (4X200) and SatTrDatay_Norm (4x50). I want to apply wavelet decomposition(wavedec) to each line separately. Next, I try to save the results to new matrices (C1,L1,C2,L2). Use for-loop but save the last value in C1,L1,C2,L2.How do I store all values resulting from the for-loop? The second problem concerns reconstruction (wrcoeff). The matrices C1,L1,C2,L2 according to the documentation must be a vector. How is this going to be done? Your help is invaluable.
for i=1:4
[C1,L1]=wavedec(SatTrDatax_Norm(i,:),3,'db1');
[C2,L2]=wavedec(SatTrDatay(i,:),3,'db1');
end
AppTrDxNorm_Sat=wrcoef('a',C1,L1,'db5',3);
D1TrDxNorm_Sat=wrcoef('d',C1,L1,'db5',1);
D2TrDxNorm_Sat=wrcoef('d',C1,L1,'db5',2);
D3TrDxNorm_Sat=wrcoef('d',C1,L1,'db5',3);
%
AppTrDySat=wrcoef('a',C2,L2,'db5',3);
D1TrDySat=wrcoef('d',C2,L2,'db5',1);
D2TrDySat=wrcoef('d',C2,L2,'db5',2);
D3TrDySat=wrcoef('d',C2,L2,'db5',3);

  0 Comments

Sign in to comment.

Accepted Answer

Shae Morgan
Shae Morgan on 10 Aug 2020
Edited: Shae Morgan on 10 Aug 2020
You just need to index your output and then reference the appropraite index
for i=1:4
[C1(i,:),L1(i,:)]=wavedec(SatTrDatax_Norm(i,:),3,'db1');
[C2(i,:),L2(i,:)]=wavedec(SatTrDatay(i,:),3,'db1');
end

  5 Comments

Show 2 older comments
stelios loizidis
stelios loizidis on 10 Aug 2020
Like, I wrote above what you suggest does not work
for i=1:4
[C1(i,:),L1(i,:)]=wavedec(SatTrDatax_Norm(i,:),3,'db1');
[C2(i,:),L2(i,:)]=wavedec(SatTrDatay(i,:),3,'db1');
end
The following error occurs; Unable to perform assignment because the indices on the left side are not compatible with the size of the right slide.
So, I can not proceed with the reconstruction.
Shae Morgan
Shae Morgan on 10 Aug 2020
I'm not sure what the problem is: Below works just fine for me in version 2020a
I noticed in your for-loop you call SatTrDatay rather than SatTrDatay_Norm (like you state in your question). That might be part of the problem
SatTrDatax_Norm=rand(4,200);
SatTrDatay_Norm=rand(4,50);
for i=1:4
[C1(i,:),L1(i,:)]=wavedec(SatTrDatax_Norm(i,:),3,'db1');
[C2(i,:),L2(i,:)]=wavedec(SatTrDatay_Norm(i,:),3,'db1'); %Make sure you use the right variable here
end
AppTrDxNorm_Sat=wrcoef('a',C1(1,:),L1(1,:),'db5',3);
Since you didn't provide me any of your data, I had to make up data of my own, so perhaps that's where the problem lies.
stelios loizidis
stelios loizidis on 10 Aug 2020
It is OK. There was an error in the calculations. Now everything works. Thank you very much for your valuable help !!!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!