如何创建一个在奇数位置生成所有元素的函数(例如1,1 1,3),如果说... 5乘8矩阵?
答案 0 :(得分:0)
我假设“奇数”是指行和列的索引都是奇数。这意味着你得到的矩阵应该是3乘4.无论如何,你的代码在下面。
function Anew = yourFunc(A)
%Create a test matrix of dimensions 5x8 of random numbers from 1-10
A = randi(10,5,8);
%Set the values of all elements with either index being an even number equal to zero
for r = 1 : size(A,1)
for c = 1 : size(A,2)
if rem(r,2) == 0 || rem(c,2) == 0
A(r,c) = 0;
else
continue
end
end
end
%Delete rows that contain ALL zeros
for r = 1 : (size(A,1)/2) + 1
if A(r,:) == 0
A(r,:) = [];
end
end
%Delete columns that contain ALL zeros
for c = 1 : (size(A,2)/2) + 1
if A(:,c) == 0
A(:,c) = [];
end
end
%State final answer
Anew = A;
end
请注意,可能有一个更有效的代码解决方案,但我从未学过计算机科学(不是我的工程学科),所以我不知道任何花哨的东西。
答案 1 :(得分:0)
索引将以最大可能值停止。因此索引x = 1:2:4将生成x = [1 3]。 x = 1:2:1将生成x = 1.所以现在您只需要确定每个矩阵行和列中有多少个元素。
Pro-Tip :在您编写的任何代码中都可以使用length()函数进行索引。使用下面的代码,A可以是任何大小的矩阵。这可以防止在更改要分析的矩阵时需要更改代码。
for row=1:2:length(A(:,1))
for col=1:2:length(A(1,:))
% do some operation on A(row,col)
end
end