1. 首页 > 科技

matlab中怎么将 M*N的矩阵的每一行中符合条件的元素放入另一个M*N矩阵的相对应的位置?感谢大家

matlab中怎么将 M*N的矩阵的每一行中符合条件的元素放入另一个M*N矩阵的相对应的位置?感谢大家

matlab 得到某矩阵中每一行的元素分别满足条件的行

A=[6 1 3; 3 4 5;8 1 7; 7 8 9];

[m,n]=size(A);

B=[];

for i=1:m

if A(i,1)>3 && A(i,2)<2

B=[B;A(i,:)];

end

end

B

matlab中怎么随机生成一个M*N矩阵,使每列和为一固定值,每个元素为整数?

% function num=randn(min_n,max_n,m,n)

%思路:

%对于某一列,先产生该列第一个随机数a,其范围为[min_n,max_n]

%然后产生该列第二个随机数b,其范围为[min_n,max_n-a]

%之后产生该列第三个随机数c,其范围为[min_n,max_n-a-b]

%终止条件为max_n-a-b&lt;=min_n

min_n=2;%最小值

max_n=100;%最大值

m=5;%行数,注:行数不宜大,否则0元素过多

n=30;%列数

num=zeros(m,n);%初始化

for i=1:n

for j=1:m

if round(max_n-sum(num(1:j,i)))&gt;min_n%随机数产生的终止条件

num(j,i)=floor(min_n+(max_n-sum(num(1:j,i)))*rand);%产生随机数

end

end

end

怎样在matlab里生成一个M*N矩阵,使里面的元素都是符号变量呢

可以用循环生成

syms A;

for i=1:M

for j=1:N

A(i,j)=sym (['a',num2str(i),num2str(j)]);

end

end

如此即可

M=N=3时 运行结果为

A =

[ a11, a12, a13]

[ a21, a22, a23]

[ a31, a32, a33]

matlab中怎样将一个矩阵里的元素作为另一组矩阵里的元素

这个要看你的一行有多少列,如一行有八列

b = reshape(a,[],4,2)

如一行16列

b = reshape(a,[],4,4)

n是列的数量/4

即:

n = size(a)

b = reshape(a,[],4,n(2)/4)

bs = size(b)

sum = []

for i = 1:bs(3)

sum = vertcat(sum,b(:,:,i))

end

然后你的sum里面就是每四个要变成2x2的矩阵为一行

sum = reshape(sum',2,2,[])

这样你就得到了你需要的所有2x2矩阵。

只不过你要乘的时候要用' 来旋转矩阵

ss = size(sum)

multiply = ones(2)

for i = 1:ss(1)

multiply = multiply .* sum(:,:,i)'

end

如有问题补充请百度hi我。

__________________________________________

貌似你一行本来就只有4列

如数据在sum里面:

sum = reshape(sum',2,2,[])

multiply = ones(2)

for i = 1:length(sum)

multiply = multiply .* sum(:,:,i)'

end

就可以了。 我前面还以为你你的输入格式是很多列的。

重点是

sum = reshape(sum',2,2,[])

然后乘的时候记住要用“'”旋转矩阵