フィルターのクリア

error with sprintf add operation between 2 terms resulting in string

2 ビュー (過去 30 日間)
Opariuc Andrei
Opariuc Andrei 2021 年 3 月 25 日
コメント済み: Opariuc Andrei 2021 年 3 月 25 日
I used sprintf Mt1a to receive a value which someone not experienced with matlab would understand the value ,there appears to be a conflict in " Mt1a+Mt2a " which gives me multiple values ,i tried using str2double to fix my result but it returns NaN ,how can i fix the result for b ?
b=sprintf('%.0f\n',a./str2double(Mt1a+Mt2a)) % ==>how i attempted to use str2double
Mt2a=66539;
Fa=88050;
d2p=37;
p=6;
rb=0.08;
tga2p=p/(pi*d2p);
x=(tga2p+rb)/(1-(tga2p*rb));
Mt1a=sprintf('%.0f\n',Fa*(d2p/2)*x)
a=Fa*(d2p/2)*tga2p;
b=a./(Mt1a+Mt2a)
  2 件のコメント
Stephen23
Stephen23 2021 年 3 月 25 日
編集済み: Stephen23 2021 年 3 月 25 日
Mt1a=sprintf('%.0f\n',Fa*(d2p/2)*x) % <- why are you converting this to character?
Mt1a+Mt2a % <- did you look at the output when you "add" two character vectors?
Mixing character vectors into your numeric operations is hindering you, not helping you. Get rid of them.
Opariuc Andrei
Opariuc Andrei 2021 年 3 月 25 日
編集済み: Opariuc Andrei 2021 年 3 月 25 日
if i remove sprintf from Mt1a the value for Mt1a+Mt2a is fixed but the value for Mt1a without sprintf =>Mt1a =
2.152845579898380e+05 . the value with sprintf =>Mt1a=215285 . I used sprintf because that's the only command i know of ,to get from Mt1a= 2.152845579898380e+05 toMt1a=215285.
Mt1a(with sprintf)+Mt2a= ss.

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

採用された回答

Star Strider
Star Strider 2021 年 3 月 25 日
I used sprintf because that's the only command i know of ,to get from Mt1a= 2.152845579898380e+05 toMt1a=215285.’
They are the same. Use the format function to change the way they appear in the workspace.
If you want to eliminate the fractional part of the numbers, use the round, fix, floor or ceil functions, depending on the result you want. (I provided a link to round, links to the others are in that documentation.)
  3 件のコメント
Opariuc Andrei
Opariuc Andrei 2021 年 3 月 25 日
round works fine too
Star Strider
Star Strider 2021 年 3 月 25 日
As always, my pleasure!

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

その他の回答 (1 件)

Steven Lord
Steven Lord 2021 年 3 月 25 日
Do you want to concatenate a number and a piece of text together?
a = '1234'; % a is a char vector
b = 5;
c = [a, num2str(b)]
c = '12345'
as = "1234"; % as is a scalar string
b = 5;
cs = as + b % automatically converts 5 to "5" then appends it to as
cs = "12345"
Or do you want to add them?
d = a + b % add 5 to the ASCII values of the characters '1', '2', '3', and '4'
d = 1×4
54 55 56 57
d2 = double('6789')
d2 = 1×4
54 55 56 57
f = str2double(a)+b % add 5 to the number represented by a
f = 1239
f2 = double(as)+b % double on a string array converts it to the number it represents
f2 = 1239
  1 件のコメント
Opariuc Andrei
Opariuc Andrei 2021 年 3 月 25 日
this is a homework of sorts , i've got this late 50's / 60 ish year old teacher that doesn't know how to use a pc , he learned how to present our study material in google meet last year because of online classes and that's about all he knows , even though i'm a newbie :) in terms of matlab ,i wanted to do my HW in matlab cause it's easier for me to work , and present my HW in a simple to ridiculous way so that anyone who hasn't seen/worked in matlab before would understand . and thus i needed easy to read(as in reading from paper ) results

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

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by