24小时热门版块排行榜    

查看: 2946  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 文家武 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 急发核心期刊论文 +3 贤达问津 2026-03-23 5/250 2026-03-23 17:13 by 妹子不好惹
[考研] 接收2026硕士调剂(学硕+专硕) +4 allen-yin 2026-03-23 6/300 2026-03-23 15:04 by 汪!?!
[考研] 一志愿华中农业071010,总分320求调剂 +5 困困困困坤坤 2026-03-20 6/300 2026-03-22 17:41 by hxsm
[考研] 一志愿华中科技大学071000,求调剂 +4 沿岸有贝壳6 2026-03-21 4/200 2026-03-22 07:21 by ilovexiaobin
[考研] 求助 +5 梦里的无言 2026-03-21 6/300 2026-03-21 17:51 by 学员8dgXkO
[考研] 22 350 本科985求调剂,求老登收留 +3 李轶男003 2026-03-20 3/150 2026-03-21 13:28 by 搏击518
[考研] 机械专硕299求调剂至材料 +3 kkcoco25 2026-03-16 4/200 2026-03-21 03:52 by JourneyLucky
[考研] 一志愿天津大学化学工艺专业(081702)315分求调剂 +12 yangfz 2026-03-17 12/600 2026-03-21 03:30 by JourneyLucky
[考研] 265求调剂 +3 Jack?k?y 2026-03-17 3/150 2026-03-21 03:17 by JourneyLucky
[考研] 324分 085600材料化工求调剂 +4 llllkkkhh 2026-03-18 4/200 2026-03-21 01:24 by JourneyLucky
[考研] 一志愿重庆大学085700资源与环境专硕,总分308求调剂 +3 墨墨漠 2026-03-18 3/150 2026-03-21 00:39 by JourneyLucky
[考研] 22408 344分 求调剂 一志愿 华电计算机技术 +4 solanXXX 2026-03-20 4/200 2026-03-20 23:49 by alg094825
[考研] 材料专硕英一数二306 +7 z1z2z3879 2026-03-18 7/350 2026-03-20 23:48 by JourneyLucky
[考研] 321求调剂 +9 何润采123 2026-03-18 11/550 2026-03-20 23:19 by JourneyLucky
[考研] 317求调剂 +5 申子申申 2026-03-19 9/450 2026-03-20 22:26 by JourneyLucky
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +4 晨昏线与星海 2026-03-19 4/200 2026-03-20 22:15 by JourneyLucky
[考研] 353求调剂 +3 拉钩不许变 2026-03-20 3/150 2026-03-20 19:56 by JourneyLucky
[考研] 招收调剂硕士 +4 lidianxing 2026-03-19 12/600 2026-03-20 12:25 by lidianxing
[考研] 085410人工智能专硕317求调剂(0854都可以) +4 xbxudjdn 2026-03-18 4/200 2026-03-20 09:07 by 不168
[考研] 考研调剂 +3 淇ya_~ 2026-03-17 5/250 2026-03-17 09:25 by Winj1e
信息提示
请填处理意见