matlab中怎么将 M*N的矩阵的每一行中符合条件的元素放入另一个M*N矩阵的相对应的位置?感谢大家
- matlab 得到某矩阵中每一行的元素分别满足条件的行
- matlab中怎么随机生成一个M*N矩阵,使每列和为一固定值,每个元素为整数?
- 怎样在matlab里生成一个M*N矩阵,使里面的元素都是符号变量呢
- matlab中怎样将一个矩阵里的元素作为另一组矩阵里的元素
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<=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)))>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,[])
然后乘的时候记住要用“'”旋转矩阵