matlab 矩阵各行相加之计算方法

2024-12-26 16:37:25
推荐回答(4个)
回答1:

总体思路:根据要保留元素的条件使用find()命令或者使用for循环对每个元素进行检测,不满足条件的元素赋值为0

参考代码
clc
clear all
close all
%-- 使用find()语句 --%
x = [1+2i 2+3i 3+4i];
ix = find(x~=(2+3i)); % 只保留2+3i,其他元素变成0
x(ix) = 0;
disp('x=');
disp(x);
%--------------------%
%-- 使用for循环语句 --%
x1 = [1+2i -2+3i 3+4i -8-5i];
for i=1:length(x1) % 假设只保留元素实部大于零的
if( real(x1(i))<0 )
x1(i) = 0;
end
end
disp('x1=');
disp(x1);
%--------------------%

输出效果
x=
0.0000 + 0.0000i 2.0000 + 3.0000i 0.0000 + 0.0000i
x1=
1.0000 + 2.0000i 0.0000 + 0.0000i 3.0000 + 4.0000i 0.0000 + 0.0000i

回答2:

你可以用递归回溯。

[f.m文件]:

function f(A, k)
if ~isempty(k) && all(sum(A(:, k), 2) == 1)
    disp(k)
end
if isempty(k)
    n = 1;
else
    n = k(end)+1;
end
for i = n:size(A,2)
    f(A, [k i]);
end
end

[调用]:

A = [1 0 1; 0 1 1; 1 0 1];    % 示例
f(A, [])

 另外,行列分清楚。看了好一会才看明白你的题目,总是把列说成行。

回答3:

使用sum函数

sum(matrix, 1),各行相加

sum(matrix,2),各列相加

回答4:

直接矩阵加法啊,例如:
clc,clear
a=rand(5)
b=rand(5)
c=a+b