Matlab学习笔记 — Cody Problem 7

Matlab Central Cody Problem 7

Problem 7. Column Removal
Remove the nth column from input matrix A and return the resulting matrix in output B.
So if

 A = [1 2 3;
      4 5 6];

and n = 2, then B is

 [ 1 3;  
   4 6 ]

这道题目要求把矩阵中的某一列给删除,想了半天就只会分类讨论所要删除的列所在的位置(始端,末端,中间),很麻烦,但依然记录下来,代码如下所示。

function B = column_removal(A,n)
    if n == 1
        B = A(:,2:end);
    end
    if n == size(A,2)%size的用法用来表示矩阵A的列数,表示矩阵行数的话则是使用size(A,1)
        B = A(:,1:end-1);
    end
    if n > 1 && n < size(A,2)
        B1 = A(:,1:n-1);
        B2 = A(:,n+1:end)
        B = [B1 B2];
    end
end

其实对于n的考虑还可以有更多,因为n的输入可能不在矩阵A的列数范围之内,不过看到该题目中所涉及到的test里面并没有这种情况所以就没有再讨论了,由此也可以看出是具有一定的局限性的,所以肯定存在更简单的方法,在查看了别人的solution之后,发现其实用一个语句就可以解决问题,代码如下所示。

function B = column_removal(A,n)
    B = A;%把矩阵A赋值给矩阵B
    B(:,n) = []; %删除B矩阵中第n列,若删除第n行则应为B(n,:) = []
end

上述代码中如果不需要返回一个新的矩阵B(好像完全可以不需要矩阵B😅),代码得到进一步简化如下所示。

function A = column_removal(A,n)
    A(:,n) = []; %删除A矩阵中第n列
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值