matlab求矩阵某一行

就是比如5*5的矩阵,求第四列的最小的x个数并把它们赋值为0并输出。
比如
11111
11151
11141
11131
11121
x=2时,
输出
11101
11151
11141
11131
11101
怎么写啊

A = [1 1 1 1 1;
     1 1 1 5 1;
     1 1 1 4 1;
     1 1 1 3 1;
     1 1 1 2 1]; 
x = 2; 
[~, idx] = sort(A(:, 4)); 
sub_idx = idx(1:x); 
B = zeros(size(A));  
for i = 1:size(A, 1)  
    if ismember(i, sub_idx) 
        B(i, :) = 0;
    else
        B(i, :) = A(i, :); 
    end
end 
disp(B);
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7554112
  • 你也可以参考下这篇文章:【Matlab 六自由度机器人】关于旋转的参数化(欧拉角、姿态角、四元数)的相关问题(附MATLAB代码辅助理解)
  • 除此之外, 这篇博客: MATLAB-6-5常微分方程数值求解中的 3. 常微分方程数值求解函数统一命名格式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    odennxx

    • ode:Ordinary Differential Equation,常微分方程
    • nn:数字,代表所用方法的阶数。
      ode23采用2阶龙格-库塔(Runge-Kutta)算法,用3阶公式做误差估计来调节步长,具有低等精度。
      ode45采用4阶龙格-库塔算法,用5阶公式做误差估计来调节步长,具有中等精度。
    • xx:字母,用于标注方法的专门特征。
      ode15s、ode23s中的“s”代表(Stiff),表示函数适用于刚性方程。
      在这里插入图片描述
      e.g.求解微分方程初值问题,并与精确解y(t)=sqrt(t+1)+1,进行比较。
      在这里插入图片描述
    >> f=@(t,y)(y^2-t-2)/4/(t+1);
    >> [t,y]=ode23(f,[0,10],2);
    >> y1=sqrt(t+1)+1;
    >> plot(t,y,'b:',t,y1,'r')
    

    在这里插入图片描述
    e.g.已知一个二阶线性系统的微分方程为:
    在这里插入图片描述

    >> f=@(t,x) [-2,0;0,1]*[x(2);x(1)];
    >> [t,x]=ode45(f,[0,20],[1,0]);
    >> subplot(2,2,1);
    >> plot(t,x(:,2));
    >> subplot(2,2,2);
    >> plot(x(:,2),x(:,1));
    

    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^