matlab 数组赋值

matlab 数组赋值,第1张

A=magic(4);
B=pascal(4);
R=repmat(A,[1 1 1])
n=5
for i=1:n
R(:,:,i+1)=R(:,:,i)B+B
end

syms 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];

总体思路:设定筛选条件,将数组中符合条件的元素筛选出来(可以筛选出元素值也可以筛选出元素对应的下标),然后将元素值赋值给另外一个数组的元素

参考代码:

clc
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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13106164.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存