Save data from for-loop and their use

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);

 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

The above you mentioned to me I tried it and it shows what the following error is: Unable to perform assignment because the indices on the left side are not compatible with the size of the right
side.
for the reconstruction, you'll need to specify which vector you would like to use from your new C1,L1 and C2,L2 matrices you're making or put it in the for-loop to reconstruct each vector.
e.g.
AppTrDxNorm_Sat = wrcoef('a',C1(1,:),L(1,:),'db5',3);
would use the deconstruction of the first row of the saved C1 and L1 matrices
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.
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.
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)

Categories

Tags

Community Treasure Hunt

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

Start Hunting!