Converting Mathcad to Matlab

I have a book with some good radar equations in it. However, everything is in Mathcad - I use Matlab. I've been converting everything I use from Mathcad to Matlab. I've run into one I'm not sure how to convert.
Mathcad has a function called root. The equation I'm interested in converting is: root(f1(u) - sqrt(0.5), u, 0.3, 0.7
As I understand it, 'root' returns the value of u to make the function f1 equal to zero. With 0.3 and 0.7 being specified, root finds u on this interval.
How do I accomplish the same thing using Matlab?
Thanks, Kim

1 件のコメント

SKar
SKar 2021 年 3 月 30 日
Hey Kim,
Is there a way to convert automatically a Mathcad file to a matlab file?
Thank you,
Stratos

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

 採用された回答

Eric
Eric 2013 年 7 月 18 日
編集済み: Eric 2013 年 7 月 18 日

2 投票

Look at the documentation for Matlab's fzero() function. For example, to find the zero of cosine between 1 and 2:
fun = @cos; % function
x0 = [1 2]; % initial interval
x = fzero(fun,x0)
x is returned with a value of 1.570796326794897.
For your case you'll use something like
fun = @(x)f1(x) - sqrt(0.5);
and of course you'll define x0 to be [0.3 0.7].
Note that the documentation for Matlab R2013a has a typo. In my code above where I defined x0, the documentation actually defines this as x (i.e., they forgot the 0).
Good luck,
Eric

3 件のコメント

Kim
Kim 2013 年 8 月 6 日
It has taken me forever to get back to this. When I tried your example it worked fine, when I tried mine it didn't. Got the following: >> x0 = [0.3 0.7]; >> fun = @(u)f1(u) - sqrt(0.5); >> x = fzero(fun,x0) Error using fzero (line 233) FZERO cannot continue because user supplied function_handle ==> @(u)f1(u)-sqrt(0.5) failed with the error below.
Undefined function 'f1' for input arguments of type 'double'.
Matt Kindig
Matt Kindig 2013 年 8 月 6 日
The error is simple: you didn't define a function 'f1' anywhere. Did you create a file called f1.m with your function? What does this:
which f1
give you?
Kim
Kim 2013 年 11 月 13 日
Yep, that was the problem. In my problem f1(u) = sinc(pi*u). So I changed what I did to: fun = @(u) sinc(u) - sqrt(0.5); u0 = [0.3 0.7]; x = fzero(fun,u0)
Note - I had to learn that in mathcad sinc is straight sin(x)/x and for matlab it is sin(pi*x)/(pi*x) - so had to take care of pi.
But now it works.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeDebugging and Analysis についてさらに検索

タグ

質問済み:

Kim
2013 年 7 月 18 日

コメント済み:

2021 年 3 月 30 日

Community Treasure Hunt

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

Start Hunting!

Translated by