matlabmatlab 自定义函数数后调用函数的语句输入参数太多怎么解决

matlab一个函数中如何调用另外一个函数中的参数
matlab一个函数中如何调用另外一个函数中的参数
09-12-17 &匿名提问
inshow主要用于调用图像索引,比如: imshow(X,map)其功能等同于: image(X) colormap(map)但是,inshow的功能要强大一些,比如用于灰度图像,RGB图像,二进制图像,都可以应用。imagesc属于图像缩放函数具体说一些例子:要显示一副灰度图像,可以调用函数 imshow 或 imagesc (即 imagescale,图像缩放函数)   (1) imshow 函数显示灰度图像    使用 imshow(I)    或 使用明确指定的灰度级书目:imshow(I,32)        由于Matlab自动对灰度图像进行标度以适合调色板的范围,因而可以使用自定义大小的调色板。其调用格式如下:           imshow(I,[low,high])    其中,low 和 high 分别为数据数组的最小值和最大值。   (2) imagesc 函数显示灰度图像   下面的代码是具有两个输入参数的 imagesc 函数显示一副灰度图像       imagesc(1,[0,1]);       colormap(gray);    imagesc 函数中的第二个参数确定灰度范围。灰度范围中的第一个值(通常是0),对应于颜色映象表中的第一个值(颜色),第二个值(通常是1)则对应与颜色映象表中的最后一个值(颜色)。灰度范围中间的值则线型对应与颜色映象表中剩余的值(颜色)。    在调用 imagesc 函数时,若只使用一个参数,可以用任意灰度范围显示图像。在该调用方式下,数据矩阵中的最小值对应于颜色映象表中的第一个颜色值,数据矩阵中的最大值对应于颜色映象表中的最后一个颜色值。5.3 RGB 图像及其显示   (1) image(RGB)
  不管RGB图像的类型是double浮点型,还是 uint8 或 uint16 无符号整数型,Matlab都能通过 image 函数将其正确显示出来。   RGB8 = uint8(round(RGB64×255)); % 将 double 浮点型转换为 uint8 无符号整型   RGB64 = double(RGB8)/255;            % 将 uint8 无符号整型转换为 double 浮点型   RGB16 = uint16(round(RGB64×65535)); % 将 double 浮点型转换为 uint16 无符号整型
  RGB64 = double(RGB16)/65535;      % 将 uint16 无符号整型转换为 double 浮点型   (2) imshow(RGB) 参数是一个 m×n×3 的数组5.4 二进制图像及其显示   (1) imshow(BW)   在 Matlab 7.0 中,二进制图像是一个逻辑类,仅包括 0 和 1 两个数值。像素 0 显示为黑色,像素 1 显示为白色。   显示时,也可通过NOT(~)命令,对二进制图象进行取反,使数值 0 显示为白色;1 显示为黑色。
  例如: imshow(~BW)   (2) 此外,还可以使用一个调色板显示一副二进制图像。如果图形是 uint8 数据类型,则数值 0 显示为调色板的第一个颜色,数值 1 显示为第二个颜色。   例如: imshow(BW,[1 0 0;0 0 1])
请登录后再发表评论!只需一步,快速开始
扫一扫,访问微社区
查看: 4755|回复: 13|关注: 0
调用函数显示输入参数不足
<h1 style="color:# 麦片财富积分
新手, 积分 8, 距离下一级还需 42 积分
自己根据网上下载源代码修改的高斯-牛顿迭代法求非线形最小二乘问题,老是显示输入参数不足。注释是根据自己理解填写的
m文件代码如下:
function [x,minf] = GN(f,x0,var,eps)
if nargin == 3& && && && && & %如果没有设置eps,则eps=1.0e-6
& & eps = 1.0e-6;
S = transpose(f)*f;& && && && &%trnspose是转置,求得r方
k = length(f);& && && && && && && &%
n = length(x0);& && && && && &&&%n为变量个数,但是没用到啊?
x0 = transpose(x0);& && && &&&%将行向量转置为列向量
tol = 1;& && && && && && && && && && &%初始容差
A = jacobian(f,var);& && && &
while tol&eps
& & Fx = zeros(k,1);
& & for i=1:k
& && &&&Fx(i,1) = subs(f(i),var,x0);
& & Sx = subs(S,var,x0);& & %求得f转置与其本身值,
& & Ax = subs(A,var,x0);& & %雅克比矩阵的值
& & gSx = transpose(Ax)*Fx;& &
& & dx = -transpose(Ax)*Ax\gSx;
& & x0 = x0 +
& & tol = norm(dx);& && && &&&%tol=dx绝对值之和
minf = subs(S,var,x);
命令窗口调用如下:
xdata = S1o;& && && && && && && &%S1o及下面的ydata1都是自己的数据
syms z1 z2 z3 z4 z5
f = ydata1 - exp(z1)./(exp(z1)+exp(-z1)).*exp(-(xdata./exp(z3)).^exp(z2))+(1-exp(z1)./(exp(z1)+exp(-z1))).*exp(-(xdata./exp(z5)).^exp(z4));
x0 = [1.5;-1.9;-2.5257];
var = findsym(f);
eps = 1.0e-3;
提示错误如下:
错误使用 GN (line 6)
输入参数的数目不足。
论坛优秀回答者
帖子最佳答案
关注者: 790
|此回复为最佳答案
你没有给函数GN提供输入参数
<h1 style="color:# 麦片财富积分
你没有给函数GN提供输入参数
昨天后来问人解决了,不过一直没来得及上网说明,很感谢解答
<h1 style="color:# 麦片财富积分
你没有给函数GN提供输入参数
function [x,minf] = GN(f,x0,var,eps)
if nargin == 3& && && && && & %如果没有设置eps,则eps=1.0e-6
& & eps = 1.0e-6;
S = transpose(f)*f;& && && &&&%trnspose是转置,求得r方
k = length(f);& && && && && & %
%n = length(x0);& && && && && &%n为变量个数,但是没用到啊?
x0 = transpose(x0);& && && &&&%将行向量转置为列向量
tol = 1;& && && && && && && & %初始容差
A = jacobian(f,var);& && && &
while tol&eps
& & Fx = zeros(k,1);
& & for i=1:k
& && &&&Fx(i,1) = subs(f(i),var,x0);
& & Sx = subs(S,var,x0);& & %求得f转置与其本身值,
& & Ax = subs(A,var,x0);& & %雅克比矩阵的值
& & gSx = transpose(Ax)*Fx;& &
& & dx = -transpose(Ax)*Ax\gSx;
& & x0 = x0 +
& & tol = norm(dx);& && && &&&%tol=dx绝对值之和
& & m = m+1;
& & if(m&100000)
& && &&&disp('迭代步数太多,可能不收敛');
minf = subs(S,var,x);
xdata = S1o;
f = ydata1 - exp(z1)./(exp(z1)+exp(-z1)).*exp(-(xdata./exp(z3)).^exp(z2))+(1-exp(z1)./(exp(z1)+exp(-z1))).*exp(-(xdata./exp(z5)).^exp(z4));
x0 = [1.5;-1.9;-2.5257];
var = findsym(f);
eps = 1.0e-3;
GN(f,x0,var,eps)
从 sym 转换为 double 时出现以下错误:
出错 GN (line 17)
& && &&&Fx(i,1) = subs(f(i),var,x0);
又出新问题了,还是麻烦能够解答一下
以下是数据
S1o:0.0000
论坛优秀回答者
帖子最佳答案
关注者: 790
function [x,minf] = GN(f,x0,var,eps)
if nargin == 3& && && && && & %如果没有设置eps, ...
Fx(i,1) = subs(f(i),var,x0);
f 明明只有一个,你为什么用 f(i)
<h1 style="color:# 麦片财富积分
Fx(i,1) = subs(f(i),var,x0);
f 明明只有一个,你为什么用 f(i)
在网络上找的资源,根据自己的要求进行修改的,这句话没有改过,自己对matlab编程理解还是很粗浅,以后继续加强学习!我先调试调试,有问题再向您请教~
<h1 style="color:# 麦片财富积分
Fx(i,1) = subs(f(i),var,x0);
f 明明只有一个,你为什么用 f(i)
抱歉,我对于matlaba这种向量式的编程理解的还是很粗浅,我有62个数据,想一一代入方程,得到它的值,用循环一一代入不行吗?按您的建议修改成Fx(i,1) = subs(f,var,x0);显示错误如下:带有下标的赋值维度不匹配。
出错 GN (line 17)
& && &&&Fx(i,1) = subs(f,var,x0);%subs(f(i),var,x0);
未修改前提示的错误如下:
从 sym 转换为 double 时出现以下错误:
出错 GN (line 17)
& && &&&Fx(i,1) = subs(f(i),var,x0);
论坛优秀回答者
帖子最佳答案
关注者: 790
抱歉,我对于matlaba这种向量式的编程理解的还是很粗浅,我有62个数据,想一一代入方程,得到它的值,用 ...
你需要提供你是如何调用这个函数的
<h1 style="color:# 麦片财富积分
你需要提供你是如何调用这个函数的
在上面的帖子中已经提供了
xdata = S1o;
f = ydata1 - exp(z1)./(exp(z1)+exp(-z1)).*exp(-(xdata./exp(z3)).^exp(z2))+(1-exp(z1)./(exp(z1)+exp(-z1))).*exp(-(xdata./exp(z5)).^exp(z4));
x0 = [1.5;-1.9;-2.5257];
var = findsym(f);
eps = 1.0e-3;
GN(f,x0,var,eps)
其中,S1o和ydata1的数据也都在上面的帖子中给出了
论坛优秀回答者
帖子最佳答案
关注者: 790
在上面的帖子中已经提供了
xdata = S1o;
f = ydata1 - exp(z1)./(exp(z1)+exp(-z1)).*exp(-(xdata./exp(z ...
z1~z5 又都是什么?你应该给出能够重现你错误的代码
站长推荐 /4
筑起功能安全的堡垒 - 基于模型设计的软件开发
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区matlab 定义 函数 变量太多怎么办 三路知识网
matlab 定义 函数 变量太多怎么办
来源:网络收集 & 发布时间: &
syms a b c d
用syms定义多个符号变量即可
本文地址:https://www.slzays.com/3438.html
matlab 定义 函数 变量太多怎么办 ……syms a b c d
用syms定义多个符号变量即可……
matlab中自定义函数中的变量问题,求高手解答 ……是函数的输入项。在你改完的程序中,traces1=
对traces1进行了重新定义,但traces这个根本就没有值,这一步的运行就错了。
由于是matlab自带的函数,我认为出现trace...……
matlab子函数能否输出多于两个变量? ……可以,输出的变量可以这样写
function [output1, output2] = function_name(input1, input2,..)
更多也可以……
MATLAB怎样定义函数(入门) 有一函数 f(x,y)=x^2+sinxy+2y , 写... ……多,Matlab中至少提供了三种方法
% by dynamic
% see also http://www.matlabsky.com
% contact me
一、匿名函数,使用最方...……
matlab中函数文件的输入变量能不能是多个,并且既有矩阵,又有... ……可以啊
function a=myfunction(A,B,c,d)
其实在这里A,B,c,d既可以是矩阵,又可以是普通的变量。只要在定义函数时,谁是矩阵,谁是普通变量,自己要清楚,直接进行不同的...……
matlab怎样输入多变量函数
……可能是你把调用函数的命令放到函数定义里了。正确做法:
先建立并保存函数文件hump.m:
function w=hump(x,y,z) %创建MATLAB函数。
w=1/((x-0.5)^3+0.2)+1/((...……
matlab中怎样定义多个变量? ……你所说的这种情况,似乎不是要160个变量,而是用一个变量x,但x是有160个元素的向量。……
Matlab如何定义符号变量
……我想问下 你学习了几天Matlab 或者是否压根没有学习MatlabMatlab中定义符号变量,提供了两个函数sym和syms两个函数有一定的区别syms定义符号变量,可以同时定义多个,如sy...……
MATLAB定义多个符号变量
……% 用一个循环即可实现多变量定义
for i=1:100
syms (['x',num2str(i)]);
%如果我们不会太多的MANTLAB功能,那我们
%就运用我们所知道的去完成那些我们未知的
%功...……
MATLAB中关于自定义函数的调用 ……
matlab编写的函数要存储在工作文件夹中,默认就是matlab.exe所在的那个文件夹里面。
或者存在别的文件夹里面,但需要在matlab中添加那个文件夹的路径,不然matlab不会去...……
所有问题分类假如我们编写了一个积分通用程序,想使它更具有通用性,那么可以把被积函数也作为一个参数。在c/c++中,可以使用函数指针来实现上边的功能,在matlab中如何实现呢?使用函数句柄——这时类似于函数指针的一项功能。假如我们现在已经编写了一个辛普森方法积分的函数如下,我们要把函数作为参数传给它(当然啦,matlab早已经提供给我们非常牛x的积分函数了,这里只是个例子而已): function g=myintegrate(f,N,a,b)
%integration using simpson method
n=N/<span style="color: #;
h=(b-a)/N;
s=sum(fv(<span style="color: #:<span style="color: #:<span style="color: #*n-<span style="color: #))*<span style="color: #;
s=s+sum(fv(<span style="color: #:<span style="color: #:<span style="color: #*n))*<span style="color: #;
s=s+f(a)+f(b);
s=s*h/<span style="color: #;
现在要做的工作就是如何把上面的f函数换成我们想要的随便什么函数。定义函数句柄:handle=@ functionname之后就可以把handle作为参数传递给上面的函数(或者其他需要使用函数作为参数的函数)了。例如在0~pi/2上对sin(x)进行积分,可以如下输入:
&&myintegrate(fh,<span style="color: #0,<span style="color: #,pi)
<span style="color: #.9947函数句柄可以指定为任意的matlab函数——当然也包括我们自定义的函数,比如我们在myfun.m文件中定义了如下函数:
function f=myfun(x)
&&myintegrate(fh2,<span style="color: #0,<span style="color: #,<span style="color: #)
<span style="color: #.4967
文章转载自 。
阅读(...) 评论()扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
MATLAB中如何实现输出一个函数表达式我要写一个function,通过输入参数得到一个函数表达式的系数,然后输出这个函数表达式.我不知道再MATLAB中怎样直接实现,我只会用fprintf那样拼凑,比如fprintf('x=%f cos %f t + %f sin %f t',a,b,c,d),(假设当a=b=c=d=2时)来实现输出x=2cos2t+2sin2t.但是这样有明显的缺陷,比如如果a=0,b=c=d=2,我希望输出的函数表达式里直接不出现cos这一项,可是如果用fprintf这样硬拼凑,就会出现x=0cos2t+2sin2t.所以我想请问在MATLAB中怎样实现直接输出一个函数表达式,
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
1、很简单啊.2、比如我们输出一个函数f=A*sin(x)-B*exp(C*x)这种表达式,A,B,C是你输入的任何参数.(1)你写上如下代码的M文件function f=dispf(A,B,C)f=A*sin(x)-B*exp(C*x);end(2)现在你直接在命令窗口输入命...
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 matlab中自定义函数 的文章

 

随机推荐