フィルターのクリア

why embedded matlab function failed to determine the size of expression

2 ビュー (過去 30 日間)
yana osman
yana osman 2012 年 7 月 18 日
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 件のコメント
Jan
Jan 2012 年 7 月 18 日
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?

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

採用された回答

Kaustubha Govind
Kaustubha Govind 2012 年 7 月 18 日
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 件のコメント
yana osman
yana osman 2012 年 8 月 6 日
In my "from file" block does not have :data interpolation within time range" dialog. its only have "file name and "sample time". Any alternative step can i do to turn off linear interpolation? by the way i'm using MATLAB R2009a
Kaustubha Govind
Kaustubha Govind 2012 年 8 月 6 日
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.

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

その他の回答 (1 件)

Fred Smith
Fred Smith 2012 年 7 月 18 日
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

カテゴリ

Help Center および File ExchangeProgrammatic Model Editing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by