24小时热门版块排行榜    

查看: 2763  |  回复: 12

文家武

金虫 (小有名气)

[求助] Matlab中如何自己定义一个新函数,然后计算时可以调用?

Matlab中如何自己定义一个新函数,然后计算时可以调用?
简单的举个例子:        编写一个输入半径,计算圆的面积和球的体积 的M文件.
        前两行是文件头,一般说明文件的 类型(M-file),文件名(tutex2),和文件的功能(输入半径,计算圆的面积和球的体积),后面是文件体,主要是解决特定问题的程序代码.
        % M-file, tutex2.m
        % 输入半径,计算圆的面积和球的体积
        r = input('Type radius:'); %从键盘输入Type radius的值,并将它赋值给r.
        area=pi*r^2;
        volume=(4/3)*pi*r^3;
        fprintf('The radius is %12.5f\n',r)
        fprintf('The area of a circle is %12.5f\n',area)
        fprintf('The volume of a sphere is %12.5f\n',volume)


用的2012a版本的。怎么才可以调用呢?最好说的详细点(带截图最好了),百度上的用过,出错了。谢谢了。
回复此楼

» 收录本帖的淘帖专辑推荐

matlab

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

lyqmath

新虫 (初入文坛)

设置函数头,并保存,通过获取输入参数数据进行调用。比如:

% 输入半径,计算圆的面积和球的体积
function TestFun(r)
if nargin < 1
    r = 1;
end
area=pi*r^2;
volume=(4/3)*pi*r^3;
fprintf('The radius is %12.5f\n',r)
fprintf('The area of a circle is %12.5f\n',area)
fprintf('The volume of a sphere is %12.5f\n',volume)
结果
>> TestFun
The radius is      1.00000
The area of a circle is      3.14159
The volume of a sphere is      4.18879
>>
12楼2013-06-04 10:37:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2012-10-20 03:09:36
既然是函数,就有输入,建立一个m文件叫tutex2.m,内容如下
CODE:
function [area,volume] = tutex2(radius)
area=pi*r^2;
volume=(4/3)*pi*r^3;
fprintf('The radius is %12.5f\n',r)
fprintf('The area of a circle is %12.5f\n',area)
fprintf('The volume of a sphere is %12.5f\n',volume)
end

保存后,在命令行输入
CODE:
[a,v] = tutex2(10.0);

可以得到计算结果
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-10-19 21:31:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文家武

金虫 (小有名气)

引用回帖:
2楼: Originally posted by libralibra at 2012-10-19 21:31:33
既然是函数,就有输入,建立一个m文件叫tutex2.m,内容如下
function  = tutex2(radius)
area=pi*r^2;
volume=(4/3)*pi*r^3;
fprintf('The radius is %12.5f\n',r)
fprintf('The area of a circle is %12.5f\n', ...

首先谢谢您了。
但是我按照您说的,1 在命令框输入程序 2 File-new-save workspace-土tutex2  3  clc 清空了整个命令框 4 输入[a,v] = tutex2(10.0);5  [a,v]=tutex2(10.0)
Undefined function 'tutex2' for input arguments of type 'double'.
3楼2012-10-19 23:36:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

双击打开保存的tutex2.m文件,然后点一下m editor的小绿色箭头运行,会弹出一个对话框,然后选择change folder
然后再输入[a,v] = tutex2(10.0);试试
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2012-10-20 04:30:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

BlueAsia

新虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
3楼: Originally posted by 文家武 at 2012-10-19 23:36:34
首先谢谢您了。
但是我按照您说的,1 在命令框输入程序 2 File-new-save workspace-土tutex2  3  clc 清空了整个命令框 4 输入 = tutex2(10.0);5  =tutex2(10.0)
Undefined function 'tutex2' for input argumen ...

LZ, 2楼的程序里变量名radius在下面的函数程序中没有正确引用
function  [area,volume] = tutex2(radius)
area=pi*radiu^2;
volume=(4/3)*pi*r^3;
fprintf('The radius is %12.5f\n',r)
fprintf('The area of a circle is %12.5f\n', ...
把程序中r改成radius就应该可以了,可以试试。有问题交流。。。
5楼2012-10-20 11:37:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文家武

金虫 (小有名气)

引用回帖:
5楼: Originally posted by BlueAsia at 2012-10-20 11:37:51
LZ, 2楼的程序里变量名radius在下面的函数程序中没有正确引用
function   = tutex2(radius)
area=pi*radiu^2;
volume=(4/3)*pi*r^3;
fprintf('The radius is %12.5f\n',r)
fprintf('The area of a circle is  ...

不用换成radius的,换了反而运行出错了。
6楼2012-10-21 09:52:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文家武

金虫 (小有名气)

引用回帖:
4楼: Originally posted by libralibra at 2012-10-20 04:30:25
双击打开保存的tutex2.m文件,然后点一下m editor的小绿色箭头运行,会弹出一个对话框,然后选择change folder
然后再输入 = tutex2(10.0);试试

文件类型:Microsoft Office Access表快捷方式(.mat)
描述:tutex2
位置:E:\matlab\Matlab\bin

我觉得是不是我存储时除了问题了的、
7楼2012-10-21 09:55:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

BlueAsia

新虫 (小有名气)

【答案】应助回帖

★ ★
文家武: 金币+2, ★★★很有帮助, 谢谢,却是对半径要写出全部的英文,缩写不行 2012-11-01 15:30:51
引用回帖:
7楼: Originally posted by 文家武 at 2012-10-21 09:55:40
文件类型:Microsoft Office Access表快捷方式(.mat)
描述:tutex2
位置:E:\matlab\Matlab\bin

我觉得是不是我存储时除了问题了的、...

保存函数应该是M-file
.mat是输入存储的矩阵变量。
另外,LZ的2012a我没用过,我的小笔记本只能跑起来2008a,所以至少在我的版本里,r要改成radius的。
程序:
function [area,volume] = tutex2(radius)
area=pi*radius^2;
volume=(4/3)*pi*radius^3;
fprintf('The radius is %12.5f\n',radius)
fprintf('The area of a circle is %12.5f\n',area)
fprintf('The volume of a sphere is %12.5f\n',volume)
end
结果:
[a,v] = tutex2(10.0);
The radius is     10.00000
The area of a circle is    314.15927
The volume of a sphere is   4188.79020
8楼2012-10-22 09:36:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

飓风gt

金虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
嗯  学习了  我也正在学习matlab 呵呵 共同努力吧
感谢木虫子当我红娘
9楼2012-10-22 11:37:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文家武

金虫 (小有名气)

引用回帖:
8楼: Originally posted by BlueAsia at 2012-10-22 09:36:56
保存函数应该是M-file
.mat是输入存储的矩阵变量。
另外,LZ的2012a我没用过,我的小笔记本只能跑起来2008a,所以至少在我的版本里,r要改成radius的。
程序:
function  = tutex2(radius)
area=pi*radius^2;
...

哦,2012a不改也可以的,我已经用另外一种方法达到目的了。共同讨论,集思广益才是学习之道。谢谢了,我也试试你的这种方法。
10楼2012-10-25 09:19:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 文家武 的主题更新
信息提示
请填处理意见