フィルターのクリア

matlab returns 'Error using <='

2 ビュー (過去 30 日間)
Bharat
Bharat 2015 年 6 月 26 日
コメント済み: Walter Roberson 2015 年 6 月 26 日
Hello guys, I need help with a script. I have a function which contains the following commands:
l = Y(abs(X-Sal)<0.0000001)
p = Y(Y <= l & X>=(Sal-0.00001))
When I run, I get the following error: Error using <= Matrix dimensions must agree. However, the same script when run in the command window gives the right result. What am I doing wrong?
Thanks

回答 (1 件)

Walter Roberson
Walter Roberson 2015 年 6 月 26 日
At the command window command
dbstop if error
and run the function. When it stops because of the error, look at size(Y) and size(l) . I suspect you will find that l is either empty or else has multiple elements.
What promises can you make that there will always be exactly 1 location where abs(X-Sal)<0.0000001 ?
  2 件のコメント
Bharat
Bharat 2015 年 6 月 26 日
Hi Walter, Yes the l is a zero by one matrix. But I don't understand why is that happening? Regarding the 1 location thing, Sal was defined as Sal = X(3); However as abs(X=Sal) doesn't work (a problem with the number of significant digits) , I defined l as such. (I also know that the values of X do differ by atleast 0.01 which makes l exactly one value).
Walter Roberson
Walter Roberson 2015 年 6 月 26 日
You should command
format long g
and then look at the value of Sal and at the values stored in X. You should also examine the values of (X-Sal) to see what the magnitude of the difference is. If your values are above about 10^8 then the difference between consecutive double precision numbers would be more than 0.0000001; look at eps(Sal) to see the distance between adjacent numbers in that range (and realize that it is common for calculations to differ by 10*eps)

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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by