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
第二种其他人的思路相当于把两个对角矩阵拼在一起