現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
0 投票
I have 2 matrices
A ranges between -32768 to 32767 ,it is 100x1 matrix
class(A) is int16
B matrix ranges from -1473 to 1570,it is 100x1 matrix
class(B) is double
asuming i divide manually the values ,max(B)/max(A), i get correct answer , but while runnning in m file , the value exceeds
The maximum value must be .049 ,but i get 1.73,
I converted both A and B to double,still i get same error ,
please assist
採用された回答
Walter Roberson
2012 年 11 月 26 日
What happens if you break it up and display the values:
ma = max(A)
class(ma)
size(ma)
mb = max(B)
class(mb)
size(mb)
mb / ma
mb ./ ma
9 件のコメント
Pat
2012 年 11 月 26 日
class of ma is int16
class of B is double
size same for A,B-100x1
max(A) is 32767,B is 1540
mb/ma-
??? Error using ==> mrdivide
Linear algebra is not supported for
integer data types.
mb./ma
??? Error using ==> rdivide
Class of operand is not supported.
After converting to double
double(max(B))./double(max(A))
ans =
0.0470
Walter Roberson
2012 年 11 月 26 日
So the problem has gone away?
Pat
2012 年 11 月 26 日
it is manula calculation in command window,but if i perform in m file i get error
Walter Roberson
2012 年 11 月 26 日
編集済み: Walter Roberson
2012 年 11 月 26 日
What happens if you paste the commands into the .m file right after your current calculation ?
ma = max(A)
class(ma)
size(ma)
mb = max(B)
class(mb)
size(mb)
double(mb) ./ double(ma)
and what is the exact line you are using for calculation at the moment?
Pat
2012 年 11 月 26 日
same answer
0.0470
Walter i mean if i divide the max values ,the value is 0.04,y do i get larger values than that ,while dividing others
Walter Roberson
2012 年 11 月 26 日
編集済み: Walter Roberson
2012 年 11 月 26 日
I don't know: you do not show the other values you are dividing.
If you are dividing elements of A and B pairwise, then the maximum possible result is reached if max(B(B>0)) is at the same location as min(A(A>=0)), or if min(B(B<0)) is at the same location as min(A(A<0)); and the maximum can be infinite because 0 is a valid member of A; NaN is also a possible output if a 0 in B happens to be at the same location as a 0 in A.
Pat
2012 年 11 月 26 日
Walter suppose am dividing a 14bit value/16 bit value,will i get 5 bit value or larger than that
Walter Roberson
2012 年 11 月 26 日
Any non-zero value divided by 0 gives an infinite result, which is going to be more than 5 bits.
If you have a 14 bit value divided by 1 (which is a valid 16 bit value) then you are going to get a 14 bit value output.
Any 14 bit value divided by a value that could be represented (without compression) in 8 or fewer binary digits, is going to give a result that requires more than 5 bits.
64 (7 bits) / 2 (2 bits) = 32 (6 bits) so the numbers represented as 14 bits can be pretty small and you would still have problems.
Pat
2012 年 11 月 26 日
Thanks walter
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Logical についてさらに検索
タグ
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
