24小时热门版块排行榜    

查看: 3550  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 文家武 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 朋友圈看到的 +7 wangzilk 2026-08-18 9/450 2026-08-24 10:50 by cmrandy
[基金申请] 能否退出参与的面上项目解除限项 +11 koalala 2026-08-24 13/650 2026-08-24 10:49 by anjeeshine
[基金申请] 放榜前的不淡定 20+4 snowwithsea 2026-08-19 17/850 2026-08-24 10:20 by echo8914667
[基金申请] 明天应该可查了!? +4 chengyan1220 2026-08-23 4/200 2026-08-24 08:47 by gloomy6159
[基金申请] 什么时候开奖? +10 CrisMessi 2026-08-18 11/550 2026-08-24 06:50 by 开心的小狮子
[基金申请] 建议基金发布提前给出明确的时间点 +11 kulium 2026-08-21 14/700 2026-08-24 02:12 by 流流伤
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +4 process2012 2026-08-23 5/250 2026-08-23 19:58 by jurkat.1640
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] 今天基金会出结果吗?20260819 +16 kkkl_v 2026-08-19 17/850 2026-08-22 16:12 by 阿布Abu
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +16 医学老男孩 2026-08-20 20/1000 2026-08-21 21:13 by Ldrop2023
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[论文投稿] 投稿咨询 +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by 期刊论文帮手
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见