RMSE of sequences in cell arrays with different length

5 views (last 30 days)
In the Sequence-to-Sequence Regression Using Deep Learning example the rmse is caclulated this way
for i = 1:numel(YTest)
YTestLast(i) = YTest{i}(end);
YPredLast(i) = YPred{i}(end);
end
figure
rmse = sqrt(mean((YPredLast - YTestLast).^2))
in this case we are interested only on the last element so YPredLast - YTestLast is one to one element substraction
IN the general case that i am interested on the whole output sequence, what will be the substraction??
YTest - Ypred cannot be performed as these are cell arrays.
how can we calculate the rmse from the whole sequencies?
  2 Comments
madhan ravi
madhan ravi on 3 Apr 2019
Edited: madhan ravi on 3 Apr 2019
You use (i) and you say it’s a cell array ?? No sign of pre-allocation whatsoever.
sotiraw sotiroglou
sotiraw sotiroglou on 19 Apr 2019
Please read more carefully the questions before you write your answers..
The code provided on the example is for a specific example , where the Ytest is a cell array. And YtestLast is not a cell array. So Ytest is a cell array and i am asking how to caclulate rmse on Ytest, if we are interested on a simular example that we do not only want the last element of it, but the whole sequence. I hope this answers to you question???
As for the pre-allocation , i just used an official matlab example. And their code , do you have any comment on the question i ask? thanks

Sign in to comment.

Answers (1)

Star Strider
Star Strider on 19 Apr 2019
I am not certain what final result you want.
This should get you started:
subt = cellfun(@minus, YTest, YPred, 'Uni',0); % Vector Differences
RMSE = cellfun(@(x)sqrt(mean(x.^2)), subt, 'Uni',0); % RMSE Of Vector Differences
You can use the cell2mat function to convert the ‘RMSE’ vector to a double vector, and then do any other necessary calculations on it.
Experiment to get the result you want.

Community Treasure Hunt

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

Start Hunting!