matlab中cell数组的疑惑function testvar(varargin)for k=1:length(varargin)x(k)=varargin{k}(1); % 这两句到底是怎么赋值的?y(k)=varargin{k}(2); % 为什么赋值后x y的类型是 cell endxmin=min(0,min(x)); % 这句提示有错误,说min

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 20:48:28
matlab中cell数组的疑惑function testvar(varargin)for k=1:length(varargin)x(k)=varargin{k}(1); % 这两句到底是怎么赋值的?y(k)=varargin{k}(2); % 为什么赋值后x y的类型是 cell endxmin=min(0,min(x)); % 这句提示有错误,说min

matlab中cell数组的疑惑function testvar(varargin)for k=1:length(varargin)x(k)=varargin{k}(1); % 这两句到底是怎么赋值的?y(k)=varargin{k}(2); % 为什么赋值后x y的类型是 cell endxmin=min(0,min(x)); % 这句提示有错误,说min
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 的使用不太熟悉,小弟目前没有分,只能给这么多了,

matlab中cell数组的疑惑function testvar(varargin)for k=1:length(varargin)x(k)=varargin{k}(1); % 这两句到底是怎么赋值的?y(k)=varargin{k}(2); % 为什么赋值后x y的类型是 cell endxmin=min(0,min(x)); % 这句提示有错误,说min
这其实不是你对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

matlab中cell数组的疑惑function testvar(varargin)for k=1:length(varargin)x(k)=varargin{k}(1); % 这两句到底是怎么赋值的?y(k)=varargin{k}(2); % 为什么赋值后x y的类型是 cell endxmin=min(0,min(x)); % 这句提示有错误,说min MATLAB,cell中每个数组的两列互换有一个n×1的cell,其中每个cell中包含了一系列的(x,y)坐标(见图),想将(x,y)换成(y,x)如何操作? matlab 采用函数cell创建的细胞数组所有元素的值为__________. matlab中怎样把一个n*1的cell变换成1*n的cell matlab 如何计算cell数组 不同元素个数比如cell类型的1.1.2.11.1.2.1106.1.124.12106.1.125.12返回值是3 Matlab中怎么返回一个数组中元素的个数 matlab 找出数组 中所有绝对值大于3的元素 matlab中两个cell数组中都是储存的矩阵,怎么把两个cell中相对应的矩阵加起来?比如元胞q={A,B;C,D},元胞w={E,F;G,H}怎么把这两个元胞数组加起来变成r={A+E,B+F;C+G,D+H}?(A,B.H都是维数相同的矩阵) matlab中cat获取高维数组,怎样循环表示每一个数组的行列 matlab中怎样判断两个cell型数组中的某些元素相等有两个cell型的矩阵啊a,b想实现如下程序:for i=1:16906for j=2:229for x=2:251if a(i,1)==b(1,j)&&a(i,2)==b(x,1)b(x,j)=[];endendendend但是出错“没有使cell数据相等 【MATLAB】数组、矩阵、向量在MATLAB中之间的区别?矩阵是二维数组,那么向量跟数组又有什么关系?如果说数组==向量,那么数组的维数跟向量的维数是不同的概念了? 如何Matlab 中在cell中添加元素 matlab中的一维数组,有没有函数能够判断数组中是否含有相同的元素? 关于MATLAB cell元胞数组中元素的引用问题a{1}='aaa';a{2}='bbb';那么a='aaa' 'bbb'要引用元素a(1)='aaa'a{1}=aaa请问a(1)和a{1}的区别是怎么回事,怎么一个有引号一个没有呢 matlab 匿名函数组的问题我生成一个元胞数组,想在每一行中添加一个随着行数k变化的匿名函数,这样写结果却是每一个还是@(t,k)nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k),求问是怎么回事?tmp=cell(n-1,1);for k=1:n matlab cell中的元素类型转换现在cell中每一个元素类型为double即 cell = {1,2,3,4};如何才能把每一个元素转换为char类型的? matlab中,怎么把三维矩阵转化为cell array?有一个90×90×22的三维矩阵,怎么把它变为22×1的cell,使cell里的每个元素是90×90的矩阵?或者怎么把1980×90的矩阵变为22×1的cell,使cell里的每个元素是90×90的 设函数func的定义形式为:void func(char ch,float x){……} 则以下对函数func的调用语句中,正确的是A.func(abc,3.0)B.t=func('A',10.5)C.func('65',10.5)D.func(65,65)