matlab cody笔记

P59546 这道题叙述不明晰,应该是找到大于23的数

function y = your_fcn_name(x)
  y=x(x>23);
end

P76 

function b = dedupe(a)
  b = unique(a,'stable');
end

如果不添加'stable',去重后直接排序

P943

function m = mirror_matrix(n)
  a=1:n;
  b=n:-1:1;
  c=[a,b];%将两个向量连在一起
  m=ones(n,1)*c;
end

将一行向量复制n行,可以在前面乘以一列单位向量

注意  a=[1:3,3:1],则a=[1,2,3]

P761

function y = shifted(x)
  m=length(x);
  for i=1:m
      y(i,:)=[i:-1:1,m:-1:i+1];%读取二维矩阵每一行进行操作
  end
end

可以用circshift函数,这个是让向量循环移位

P742

function A = your_fcn_name(n)
  A=[];
  for i=1:n
      for j=1:n
          A(i,j)=min(i,j)/max(i,j);
      end
  end
end
function A = your_fcn_name(n)
  A = (1:n)'./(1:n);
  A = triu(A)+triu(A)'-eye(n);
end

第一种常规想法,用循环

第二种来自其他人的解法,将两个三角矩阵拼接在一起

P1325

function y = your_fcn_name(x)
  if x==1||x==2
      y=ones(x);
  else
      y=zeros(x);
      for i=2:x-1
          y(i,i-1)=1;
          y(i,i+1)=1;
      end
      y(1,1)=1;
      y(1,2)=1;
      y(x,x-1)=1;
      y(x,x)=1;
  end
end
function y = your_fcn_name(x)
  y = diag(diag(ones(x-1)),-1)+diag(diag(ones(x-1)),1);
  y(1,1)=1;y(x,x)=1;
end

第二种其他人的思路相当于把两个对角矩阵拼在一起

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bhZ567

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值