why embedded matlab function failed to determine the size of expression
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi all,
u is an input from the output of continous state.so, for each time (1 x 3) matrix will come out, so
u matrix = 1 x 3
Mean = 1 x 450
is a mean of samples.This input from workspace which consist 150 times with 3 variables so its matrix is (1 x 450). but we only need (1 x 3) matrix to evaluate for each time
Std = 1 x 450
is a standard deviation of samples.Same description as above(mean)
Xnew = 1x3
is an outpyt from the equation Xnew = u-mean/std
Example;
for time 1
Xnew = u-Mean(1,1:3)
time 2
Xnew = u-Mean(1,4:6);
untill time 150
i'm trying to do loop in embedded matrix function as below command:
function Xnew = stats(u,Mean, Std)
%#eml
for j=1:150,
Xnew = (u-Mean(1,j:j+2))./Std(1,j:j+2);
end
unfortunately i received this error,
"Could not determine the size of this expression"
I'm doing looping because i want to pick the submatrix that will be used in the equation.
What should i change above command so as i can get the result as i want? anybody have idea?
1 commentaire
Jan
le 18 Juil 2012
I have problems to determine the size of u also. Are u and Mean, Std and XNew different variables? Then please edit the question and brush up the formatting.
Does Matlab have a chance to know the size of u?
Is there a reason to overwrite XNew in each iteration of the for j loop?
Réponse acceptée
Kaustubha Govind
le 18 Juil 2012
Strange. This works fine for me (I'm using R2011b). Perhaps you are using an older version of MATLAB? What about if you pre-allocate Xnew at the top of the function:
Xnew = zeros(1,3);
4 commentaires
Kaustubha Govind
le 6 Août 2012
Yana: Sorry, perhaps the option to turn off interpolation was only introduced in a later release. You could try using Inport blocks to import data - these blocks should have an "Interpolate data" checkbox which you can turn off.
Plus de réponses (1)
Fred Smith
le 18 Juil 2012
In more recent versions your code should just work. However, in older versions the size of this pattern was not understood:
j:j+2
Simply rewrite it as:
j + (0:2)
HTH,
Fred
0 commentaires
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!