matlab 编程高手进 关于自定义函数
背景:假设x=[2.134.3];那么有x(1)=2.1,x(2)=3,x(3)=4.3;我想解决的问题:现在我想往其中插一个值,比如,将2.9插在x(1)与x(2)之间...
背景:假设x=[2.1 3 4.3];
那么有x(1)=2.1,x(2)=3,x(3)=4.3;
我想解决的问题:现在我想往其中插一个值,比如,将2.9插在x(1)与x(2)之间,在语法上我想实现x(1.5)=2.9。之所以还用x,而不是换一个标示符,是考虑到程序的可读性。
注意不是令x=[2.1 2.9 3 4.3];虽然实现了差值,但这样后面程序的可读性就差了,是x(2)=2.9。
我的思路:令t=[1 1.5 2 3] ;new_x=[2.1 2.9 3 4.3]; 定义一个函数x(t),(最好在原文件中定义,像c语言一样)。 这样就像plot(x,y)一样,我可以轻易获得函数x(t),该函数的定义域t,该函数的值域new_x。
请你提供实段代码现我的设想,不一定按我的思路。最好是在一个文件中实现,不要另编一个函数文件。
谢谢大神。跪拜。
c语言数组下标从0开始;matlab向量下标从1开始;两者各有方便与不方便之处。我现在处理的问题是希望下标从0开始,而且可以取有理数。matlab底层代码是c语言,他既然可以修改规定让下标从1开始(可能就是用函数实现的),我就应该也可以修改这条规定。 展开
那么有x(1)=2.1,x(2)=3,x(3)=4.3;
我想解决的问题:现在我想往其中插一个值,比如,将2.9插在x(1)与x(2)之间,在语法上我想实现x(1.5)=2.9。之所以还用x,而不是换一个标示符,是考虑到程序的可读性。
注意不是令x=[2.1 2.9 3 4.3];虽然实现了差值,但这样后面程序的可读性就差了,是x(2)=2.9。
我的思路:令t=[1 1.5 2 3] ;new_x=[2.1 2.9 3 4.3]; 定义一个函数x(t),(最好在原文件中定义,像c语言一样)。 这样就像plot(x,y)一样,我可以轻易获得函数x(t),该函数的定义域t,该函数的值域new_x。
请你提供实段代码现我的设想,不一定按我的思路。最好是在一个文件中实现,不要另编一个函数文件。
谢谢大神。跪拜。
c语言数组下标从0开始;matlab向量下标从1开始;两者各有方便与不方便之处。我现在处理的问题是希望下标从0开始,而且可以取有理数。matlab底层代码是c语言,他既然可以修改规定让下标从1开始(可能就是用函数实现的),我就应该也可以修改这条规定。 展开
展开全部
可以用细胞数组(cell)或者结构体来实现。但你说你这种思路"可读性"好,实在是不敢同意,好的程序是所有人都可以一眼看懂才行→应该用通用的方法写代码。你把代码贴下,我给你换个思路吧?
更多追问追答
追问
cell类型的我懂,我也会用,你不用实现。
只是我不会自定义函数。
“但你说你这种思路"可读性"好,实在是不敢同意”:这说明你对c语言根本不了解嘛,你不知道这个在c语言里用重载和自定义函数很好实现吗?可能甚至不用重载,因为调用数组元素(x[ ])和调用函数的一个值(x())不一样,一个用中括号,一个用小括号,没有歧义。用c语言的结构和类相当于用matlab的cell嘛,这种设计更复杂,也没必要,我不想这么写代码。
追答
% 呵呵,我不经常用C++,没你懂得多^_^
% Matlab自定义函数格式是:
function new_x=x(t)%new_x是返回值,x是函数名,t是形参
new_x=zeros(1:length(t));
for i=1:length(t)
switch t(i)
case 1
new_x(i)=2.1;
case 1.5
new_x(i)=2.9;
case 2
new_x(i)=3;
case 3
new_x(i)=4.3;
end
end
% 运行结果:
% >> disp(['x(1)=',num2str(x(1)),' x(1.5)=',num2str(x(1.5)),' x(2)=',num2str(x(2)),' x(3)=',num2str(x(3))])
% x(1)=2.1 x(1.5)=2.9 x(2)=3 x(3)=4.3
% 如果可以的话,告诉我题目帮你看看
% P.S. 在matlab里一个文件内可以写多个函数,只是不推荐这样
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
东莞大凡
2024-08-07 广告
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询