附加从矩阵中删除的列(matlab)?
通过本网站用户的帮助,我从矩阵中删除了以下列:附加从矩阵中删除的列(matlab)?,matlab,matrix,Matlab,Matrix,通过本网站用户的帮助,我从矩阵中删除了以下列: a = [5 1 4; 2 1 1; 5 2 8]; n = size(a,1) for i=1:n, [v, i] = min(a(3,:)); col = a(:, i); a(:, i) = []; end 我希望将每个迭代的col组合到一个矩阵中 有什么建议吗?我不太确定我是否理解这个问题。你想要这个吗: a = [5 1 4; 2 1 1; 5 2 8]; n = size(a,1); result = []
a = [5 1 4; 2 1 1; 5 2 8];
n = size(a,1)
for i=1:n,
[v, i] = min(a(3,:));
col = a(:, i);
a(:, i) = [];
end
我希望将每个迭代的col组合到一个矩阵中
有什么建议吗?我不太确定我是否理解这个问题。你想要这个吗:
a = [5 1 4; 2 1 1; 5 2 8];
n = size(a,1);
result = [];
for i=1:n
[v, i] = min(a(3,:));
col = a(:, i);
result = [result col];
a(:, i) = [];
end
结果如下:
1 5 4
1 2 1
2 5 8
获取第三行元素的排序顺序,并用于重新排列
[s idx] = sort(a(3, :);
a_new = a(:, idx);
您的代码中存在一些严重问题:
i
作为变量名。虽然在Matlab中完全合法,但它仍然被认为是不好的做法,因为i
(和j
)也表示虚单位。这就像说1=sin(x)
,你用1
不是一个数字,而是一个变量名……有点让人困惑 a(:,i) = inf
而不是
a(:, i) = []
b = sortrows(a.',3).'
或者
[~, inds] = sort(a(3,:);
b = a(:, inds);
Matlab能够对你能想到的矩阵进行任何相对基本的运算,通常也有多种方式。通常,它在这方面比你我做得好得多,这仅仅是因为它的许多工具都是多年来由数十名程序员开发、改进和调试的,其中许多人在某一领域比你我都更有天赋和经验正是我要找的!谢谢我需要的那部分就是你列出来的结果。。我没有意识到,在每次迭代中都需要添加到矩阵中。这是一个笑话,对吗?这个答案怎么能被投票和接受呢。答案很糟糕。它修改“i”,这是循环变量。这与各地使用的最基本的编程实践背道而驰。罗伯特H:我同意这不是一个好的做法,但这是对原始代码(我需要的部分…)进行最小修改的问题的确切答案。我不清楚这个问题的目的,所以我没有试图回答一些可能没有被问到的问题。我想说答案的质量与问题的质量完全相同。在循环中更改for循环变量不是好的做法。。你想达到什么目的?也许有更好的方法做这件事1.我什么都同意,尤其是。但不包括(2),关于
i
。在某些应用程序中使用虚数是非常罕见的,如果使用,则可以将使用范围限制为小的闭合函数。我理解这是相当主观的,我们可以整天讨论它,但是,以我的拙见,我不会称之为“坏习惯”。@Andrey,除非你用平方根做一些事情,并且根的论点无意中变成了否定。您会使用“size”作为变量名吗?实际上,最好使用1i或1j作为虚单位,并避免使用i和j作为变量。ii型或jj型有多难?谢谢你的意见。我试图描述一个更大的问题,同时使代码更简单,直截了当。我会记住这些。