B=pascal(4);
R=repmat(A,[1 1 1])
n=5
for i=1:n
R(:,:,i+1)=R(:,:,i)B+B
endsyms x1 x2 x3 x4 x5 x6 x7 dy1 dy2 dy3 dy4 dy5 dy6 dy7;
x = sym([x1,x2,x3,x4,x5,x6,x7]);
dy = sym([dy1,dy2,dy3,dy4,dy5,dy6,dy7]);
y = 17442(x1/x5)(x3/(x2-x1))^085
sqrt((1-262(1-036(x4/x3)^(-056))^(3/2)(x4/x2)^116)
/(x6x7));
for i = 1:7
dy(i) = inline(char(diff(y,x(i))));
end
你想将结构体的每一行都赋值给一个数组,那样应该是得到以下几种结果之一:
多个数组(但你现在只有一个变量,显然不符合);
一个元胞数组,其每个元素对应原结构体的一行;
一个大数组,由原结构体各行的数组拼接而成(前提是各数组的列数相同,图中看到的数据刚好满足这个条件)。如果想要这样的结果,应该把
A=database(i)data改成
A=[A; database(i)data];总体思路:设定筛选条件,将数组中符合条件的元素筛选出来(可以筛选出元素值也可以筛选出元素对应的下标),然后将元素值赋值给另外一个数组的元素
参考代码:
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)