matlab函数如何传入参数

matlab函数如何传入参数,第1张

函数定义时,多加一个参数m

function y=testf(t,x,m)

a=08;m = 001;b=01;

y=[-ax(1)x(2)+mx(2)-bx(1),ax(1)x(2)-bx(2)-mx(2),bx(1)+bx(2)]';

执行部分

ts=0:01:50;

x0=[098,002,000];

mm=1:01:50; %不同的m取值,根据需要自己改

result=zeros(length(ts),length(m));

for i=1:length(mm)

m=mm(i);

[t,x]=ode45(@(t,x) testf(t,y,m),ts,x0);

result(:,i)=x(:,2);

end

imagesc(mm,ts,result);%画二维图

总体思路:设定筛选条件,将数组中符合条件元素筛选出来(可以筛选出元素值也可以筛选出元素对应的下标),然后将元素值赋值给另外一个数组的元素

参考代码:

clc

clear all

close all

x = randi(10, 1, 5);    % 原始数据

disp('x=');

disp(x);

y1 = -1  ones(1, length(x));  % 存储筛选出的结果,并初始化成不可能出现的结果

%-- 筛选符合条件的元素下标,并将对应元素存到y1 --%

ix = find(x>=3);                 % 例如,筛选出原始数据中大于3的元素的下标

if(isempty(ix))

    disp('x的元素均不符合条件');  

else

    y1(1:length(ix)) = x(ix);    % 将符合条件的元素存到y1中

    y1( find(y1==-1) ) = [];     % 剩余元素删除

    disp('y1=');

    disp(y1);

end

%----------------------------------------------%

y2 = -1  ones(1, length(x));  % 存储筛选出的结果,并初始化成不可能出现的结果

%-- 筛选符合条件的元素值,并存入y2 --%

for i=1:length(x)

    if(x(i)>=3)      % 逐个检测x的元素是否符合条件,把符合条件的元素值赋值给y2

        y2(i) = x(i); 

    end

end

y2( find(y2==-1) ) = [];     % 剩余元素删除

disp('y2=');

disp(y2);

%----------------------------------%

输出结果

x=

     7     1     9    10     7

y1=

     7     9    10     7

y2=

     7     9    10     7

问题1:想在button2_click事件调用m函数,如何使用button1_click事件中的变量arr?

使用一个全局变量保存arr。

// 问题1:没有声明arr?请问哪里不对呀?我已经将butoon1_click定义为public了呀

public是指方法是public,不是里面的变量都是public

//问题2:如何去掉每行末尾的\r 然后 将arr转成 4列的数组[1 32 53 54]

使用正则表达式去掉换行符,如下:

string content=@"aaa

bbb";

content = RegexReplace(content, "\r","");

至于转换数组,你本身不就是string数组吗?

这句话的意思是imhist这个函数的参数要是double,整型等,而不是楼主所写的字符串。。。

所以楼主想要计算图像的直方图必须先用一个变量存起来,例如

X=imread('路径\文件名tif');

%接着再计算直方图

cchisteq(X);

在c/c++中,可以使用函数指针来实现,在matlab中,使用函数句柄这时类似于函数指针的一项功能例如:

自定义一个函数如下,这个myfunm函数是将要当做参数用的

function f=myfun(x)

f=x^2;

你知道这个m文件要放在哪里才能调用是吧下面这个函数的参数就是函数:

function g=fun(f)

g=f(2)+f(3);

然后我在命令窗口输入如下,出现结果:

>> f2=@myfun;

>> fun(f2)

ans =

13

function calculate_Callback(hObject, eventdata, handles)

x=str2double(get(handlesplus1,'string'));

y=str2double(get(handlesplus2,'string'));

z=x+y;

加上

hadnlesz = z;

guidata(hObject,handles);

在function result_callback(hObject, eventdata, handles)

中:z = handlesz;

set(hObject,'string',num2str(z));

按钮callback

str = get(handlesedit_result,'string');

y = str2func(str);

plot(x,y,handlesaxes1);

在gui的toolbar中添加dataCurse,即可实时获得坐标轴上得点的坐标

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12183729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存