24小时热门版块排行榜    

查看: 2127  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 文家武 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 这个博士要读吗 +14 Sea Breeze 2024-06-16 23/1150 2024-06-20 05:41 by 投必得科研顾问
[基金申请] 刚刚收到科研之友邮件 +8 olivermiaoer 2024-06-19 10/500 2024-06-20 00:06 by zhanghaozhu
[论文投稿] 审稿 +5 香瓜木香 2024-06-19 6/300 2024-06-19 17:44 by xli1984
[基金申请] 基金得中 +4 woaini0218 2024-06-18 4/200 2024-06-19 17:27 by mengzl
[基金申请] Nature 11日发文,中国著名学者们称造假迫不得已 +8 babu2015 2024-06-14 8/400 2024-06-19 15:25 by 风今25
[找工作] 杭电、天津科技、青农和宁波工程学院如何选? +12 味道很好啊 2024-06-13 24/1200 2024-06-18 23:09 by 药材
[基金申请] 希望今年自己国自然面上项目和老婆青年项目能中! +8 恐龙爸爸 2024-06-14 8/400 2024-06-18 19:57 by 3115321
[教师之家] 请问事业编制和年薪制冲突吗? +12 ZHONGWU_U 2024-06-14 12/600 2024-06-18 19:31 by fangyl2005
[论文投稿] 投稿求助 10+3 2022_灵魂工程师 2024-06-16 8/400 2024-06-18 12:12 by 投必得科研顾问
[基金申请] 有人中过人文社科类的博后特助吗? +3 outsider1986 2024-06-16 5/250 2024-06-18 11:10 by 袁天未然
[有机交流] 求教最后一步问题出在哪 20+3 苏州浩恒 2024-06-15 4/200 2024-06-18 08:33 by like_2005
[论文投稿] 论文已接收,但发现修改稿传的是旧版该怎么办? +3 zsq54321 2024-06-15 6/300 2024-06-17 19:45 by wjykycg
[催化] 镍负载氧化铝的保存问题 8+3 lwn0130 2024-06-15 4/200 2024-06-17 10:48 by adaihao
[教师之家] 每次骚扰女学生的都是院系领导,而不是普通教师,小编们要注意措辞正确 +9 zju2000 2024-06-15 11/550 2024-06-16 14:49 by appleapple2
[基金申请] 博后基金,博管会会提前知道消息吗? +4 yuyiang 2024-06-13 4/200 2024-06-16 11:40 by yangyuzhong4
[论文投稿] 投稿被一个审稿人恶意评审了怎么样? +5 1chen 2024-06-14 7/350 2024-06-15 23:15 by xy66xy
[基金申请] 博后基金,以往的结果点不开,怎么回事呢?最后一次机会了,两次都没中前面。 +7 kyukitu 2024-06-14 13/650 2024-06-15 06:46 by 我是王小帅
[基金申请] 博士后基金需要结题吗? +8 zhouchuck 2024-06-13 8/400 2024-06-14 17:27 by liuyupu132
[有机交流] ππ堆积会发生在有机溶剂中吗 5+3 zibuyu0420 2024-06-13 4/200 2024-06-14 14:17 by 小肉干
[基金申请] 工材E10口函评结束了吗 10+3 我1的飞翔 2024-06-13 5/250 2024-06-14 06:35 by nono2009
信息提示
请填处理意见