例如,你想定义一个含100个元素的数组,数组的每个元素是一个向量,那么可以这样:
A=cell(100,1);%定义一个长度为100的胞元数组
a=[1
2
4
5
2];%定义a向量
b=1:23;%定义b向量
A{1}=a;将a向量作为数组A的第一个元素
A{2}=b;%将b向量作为数组A的第二个元素
如果数组长度不大,可采用循环的方式,每次用 randperm 产生随机排列,然后判断是否与原数相同,直到满足要求为止。
参考代码:
a = [1 2 3];n = length(a);
while true
p = randperm(n);
if all(p-(1:n)), break, end
end
b = a(p)
从直觉上判断,如果数组元素比较多,这种方式的效率可能会比较低,需要研究更好的做法。不过从实际的测试看,效率似乎并没有受很大影响。你可以试试看,如果确实需要改进再说。
答:matlab数据长度不一样,这么扩充:定义一个长度为I相较于T缺少数据个数的全0向量I=[I;z];%数组扩展,得到新纵轴数据,与横轴数据长度相等plot(T,I);grid on;%作图,matlab将数扩大为整数,MATLAB整数类型
1 uint64() 应用时要尽可能用字节数少的数据类型表示数据,这样可以节约存储空间和提高运算速度。例如,最大值为 100 的数据可以用一个字节的
2 int16 5) 如果希望知道数据类型,并且指定输出,则可以使用 class() 函数,例如: >> xType = class(x) 结果为: xType
3 >> km %元素与元素相乘 ans = 6 6 21 20 5你可以把每一个复数比如2+i3当作字符串用fscanf来读就行了,因为fscanf读数据的格式如果直接读入数组不好把数组分隔开,因此你需要一个数据一个数据的来读。假设你的数据文件在D:\testtxt中,则代码如下a=zeros(100,1);%100是说明作为例子来说明,因为要把数据读到a中,因此只需取一个足够大的数可以使a容纳testtxt中的数据即可
a=sym(a);file=fopen('D:\testtxt','rt'); data=fscanf(file,'%s',1);
i=1;
while 1
if strcmp(data,'')==1
break;
else
a(i)=data;
i=i+1;
data=fscanf(file,'%s',1);
end
enddisp(a);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)