Matlab find(),ones(a,b)

本文介绍了一种方法,使用find函数来查找数组中非零元素的线性索引。通过示例展示了如何生成特定维度的矩阵并找到其中非零元素的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

寻找 非零元素的索引。

I=find(XYZ>0)

返回线性索引对应数组X的非零条目。X可能是一个合法的表达。返回一维数组。

结果:

ones(a,b)

XYZ = ones(12,3)

ones(a,b)表示  生成a行b列的矩阵。

### mPAGE-B 模型在 MATLAB 中的实现 mPAGE-B (Modified Partial And Global Evaluation of B-spline) 是一种用于评估B样条曲线的方法。该算法通过改进传统的全局和局部评价方法来提高计算效率。 为了实现在MATLAB中的应用,可以按照如下方式编写代码: #### 函数定义 首先创建一个名为 `mpageb_eval` 的函数文件,此函数接受控制点、节点向量以及求值位置作为输入参数[^1]。 ```matlab function d = mpageb_eval(p, u, k) % Mpageb evaluation function. % % p : Control points matrix where each row represents a point. % u : Knot vector as column vector. % k : Degree of the basis functions. n = size(p, 1); % Number of control points span = findSpan(n, p, u, k); N = basisFuns(span, u, u(k+2:end-k), k); d = zeros(size(u)); for i=1:length(u) Ni = N{i}; for j=max(0, span(i)-k):min(n-1, span(i)) d(:,i) = d(:,i) + Ni(j-span(i)+k+1)*p(j+1,:); end end end ``` 上述代码实现了基本功能框架,其中包含了两个辅助子程序:`findSpan` 和 `basisFuns` 来分别确定区间索引并计算基底函数值[^2]。 #### 辅助子程序 接下来提供这两个必要的支持工具的具体形式: ##### 计算跨度(Span) 这段小程序用来查找给定参数u对应的非零基底所在的区间的起始位置。 ```matlab function i = findSpan(n, p, U, degree) % Find knot span index at parameter value 'U'. if length(U)<degree+2 || n<degree+1 error('Invalid input parameters'); end i = max(find(U<=max(min(U(end-degree), min(max(U(degree+2:end), U)), ... U(floor(length(U)/2)))),[],'last') - degree; while ((length(U)>i+degree+1)&&(U(i+degree+1)==U(i+degree))) i=i-1; end end ``` ##### 基础函数(Basis Functions) 这部分负责构建所需的分段多项式表达式的系数矩阵。 ```matlab function N = basisFuns(i, u, U, p) % Compute non-vanishing basis functions over interval [xi,xj]. ni = cell(1,p+1); nu = ones(1,p+1); for r=1:p left = u-i+r; right=u-(i-p+r-1); saved = 0; for l=r:-1:1 temp = nu(l)/(right-l+saved); ni{l}=[temp*left nu{l}]; saved=saved-temp; end nu(r+1)=saved*(r+1); end N = ni{end}; for s=p-1:-1:1 N = conv(N,ni{s}); end end ``` 这些片段共同构成了完整的mPAGE-B模型解决方案,在实际操作过程中可根据具体需求调整细节部分以适应不同应用场景的要求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值