永发信息网

matlab中cell数组的疑惑

答案:1  悬赏:30  手机版
解决时间 2021-08-17 13:07
matlab中cell数组的疑惑
function testvar(varargin)
for k=1:length(varargin)
x(k)=varargin{k}(1); % 这两句到底是怎么赋值的?
y(k)=varargin{k}(2); % 为什么赋值后x y的类型是 cell
end
xmin=min(0,min(x)); % 这句提示有错误,说min函数对cell没有定义
ymin=min(0,min(y));
figure
axis([xmin fix(max(x))+3 ymin fix(max(y))+3]) % fix round toward zero
plot(x,y)
以上是我的程序,我自己定义了一组数据来测试这个函数 a=[1 2 3];b=[3,4];c={a,b;a,b} ;testvar(c) ;然后运行错误,提示说 “Undefined function 'min' for input arguments of type 'cell ” .然后我把x y 输出后发现x y是 cell 类型的.我就不懂 x(k)=varargin{k}(1);
y(k)=varargin{k}(2) ; 这两句是怎么赋值的?我的理解是比如k=1时 ,varargin{1}(1) 为数组a的第一个元素,也就是1啊?这样到最后循环结束 x y应该是普通数组啊,为什么成 cell 型的了呢?
我对 varargin 的使用不太熟悉,小弟目前没有分,只能给这么多了,
最佳答案

这其实不是你对cell数组的理解问题
而是你对varargin使用方法理解的问题
varargin是可以接受一串参数列表的变量
你不需要在调用函数之前将输入参数放到cell矩阵
你只要像一般的函数调用那样,用逗号分开多个输入参数
系统会自动地将参数列表按行向量cell矩阵的方式传递给varargin
也就是说你只要定义function out=fun(varargin)
你可以fun(a,b,c,d,e)这样调用fun函数
然后在fun函数内部varargin={a,b,c,d,e};
这样的设置,是使一些输入参数个数不确定的函数能够正确调用输入参数
例如plot函数
plot(x,y);
plot(x,y,'linewidth',1,'colro','r');
甚至还可以设置线型,符号形状,符号大小,符号边框颜色,符号填充颜色等参数
还有很多matlab系统定义的函数,有很多可以设置的属性,
但很多时候我们不需要全部都设置,有时候需要设置多一点,有时候设置少一点
实际上这些函数后面的输入都是以varargin传递到函数里面的
在函数里面再根据varargin的长度,取出这些参数来进行设置
你把a,b打包成为c一个cell矩阵
然后掉用testvar(c),实际上varargin={c},是一个长度只有1的cell数组
你可以输出x,y,你也可以输出length(varargin)看看是不是1
那么varargin{k}(1)实际上就是c(1),所以也还就是cell数组
之所以出现这样的错误,是你还没有搞清楚varargin的用法
实际varargin会对整个输入参数列表用{}也就是cell数组包装起来
就因为多包装了一层,所以你认为应该是数值的值其实还有一层cell每解包,还是cell


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
崛起战俘在什么地方
有干燥综合症但吃了中药以后肚子胀气?怎么回
有什么好看的小说…@
与电源相接平行板电容器的负极板接地,两板电
什么洗面奶比较好用类?要抗敏的~
动物体外受精的 好处和 坏处
昭熙来上快乐大本营单独跳舞的背景音乐是什么
苹果的MP5都支持哪些格式的电子书?
关于电气自动化专业的问题
召陵区漯河众益达冷鲜肉地址在哪,我要去那里
电脑显卡配置太低怎么办?图表系统组建失败会
流金岁月原唱是谁
a big nature park翻译
求几部海贼王同人小说。
农场搞活动么?我挖到各色葫芦种子
推荐资讯
食材提取凭证怎么用?
好想好想他,我要怎麽做
腾讯真够呛的,是不是要永远每月红钻,才能永
写RAP歌词,是先写词再配音乐吗?
幼儿歌曲钢琴谱给我一套 ,要整套呀!
高中经典英语作文
已经过去的,再也回不来,是吗?
猫咪喜欢咬人怎么办,我家小奶猫最近不知道怎
DNF第9章除了使徒篇还有什么篇啊?
獅子座的幸運數字是多少?
咸安区咸宁西河建材这个地址怎么能查询到,着
为什么我今天参加QQ飞车活动只获得了2000多点
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?