matlab
文章平均质量分 50
lixiaohu0524
B站万粉up主:千条数学课收藏夹分类,微信lixiaohu0524,公众号:千条数学课收藏夹分类
展开
-
对icp程序的一些注解,FILEexchange,MATLAB
clear all;syms a b c d e f g h i j k l m n o p q r s t u v w x y z;model=[a b c;d e f;g h i;x y z]data=[k l m n; o p q r; s t u v ]N=4size(data,2)med=mean(data,2);mem=mean(model,1);C=datamodel-(Nmed)mem%这里的矩阵分别为N3,和3*N类型对应于找了最近点之后的两点群的点对%相当于点数不同的原创 2021-09-18 14:24:09 · 180 阅读 · 0 评论 -
汉明码是怎么通过增加校验位来校验的,matlab
cleara=[1,0,1,0,1,1,1];k=4n=length(a(????);z=1;j=1;h=zeros(1,n+k);for i=1:n+k %将输入数组写入全零矩阵待用,且跳过验证if i==2^(z-1) %在2的次幂位置上添加索引,用来填写增加的校验码作为索引的内容z=z+1;continueelseh(i)=a(j) %所以h就是一个膨胀了的数组a,加入了几个校验码j=j+1;endendh =原创 2021-09-03 16:25:19 · 183 阅读 · 0 评论 -
[7,4]循环码的全部码字用matlab导出,并验证生成多项式的理想结论
n=7;k=4;p=cyclpoly(n,k,‘all’);[H,G]=cyclgen(n,p(1,:));a=G(1,:)b=G(2,:)c=G(3,:)d=G(4,:)a+ba+ca+db+cb+dc+da+b+cb+c+da+c+da+b+da+b+c+d运行如下: 1 0 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0原创 2021-09-03 10:12:42 · 1131 阅读 · 0 评论 -
preall点云粗对齐作为matlab函数,pca和普氏分析法都有函数,主成分也有函数
target=V0;十万点source=V111;七万点[COEFF,Prealligned_source] = princomp(source);[COEFF,Prealligned_target] = princomp(target);% the direction of the axes is than evaluated and corrected if necesarry.Maxtarget=max(Prealligned_source)-min(Prealligned_source);原创 2021-03-23 17:35:20 · 268 阅读 · 0 评论 -
极简的有限差分法做ICP的主干matlab代码
极简的有限差分法做ICP的主干代码npoinst=10000;x=rand(npoinst,1)*100-50; y=rand(npoinst,1)*100-50; z=sqrt(x.2+y.2);Points_Static=[x y z]; x=rand(npoinst-100,1)*100-50; y=rand(npoinst-100,1)*100-50; z=sqrt(x.2+y.2);Points_Moving=[x y z];scale_matrix = zeros(4,4);defa原创 2021-03-17 15:15:48 · 100 阅读 · 0 评论 -
普氏分析法的计算过程,使用的误差,matlab
syms a b c d e f A B C D E FX=[a,b;c,d;e,f];Y=[A,B;C,D;E,F];% X=[1,2;3,3;4,5]% Y=[1,2;3,4;4,2]muX = mean(X,1)muY = mean(Y,1)X0 = X - repmat(muX, 3, 1)Y0 = Y - repmat(muY, 3, 1)ssqX = sum(X0.^2,1)ssqY = sum(Y0.^2,1)ssqX = sum(ssqX)ssqY = sum(ssq原创 2021-03-12 16:29:49 · 287 阅读 · 0 评论 -
普氏分析法的输入和输出实例,matlab图像处理
X=[1,2;3,3]Y=[1,2;3,4][a,b,c]=procrustes(X,Y)Z = c.b * Y * c.T + c.ca =-4.4409e-16b = 1 2 3 3c =T: [2x2 double]b: 0.7906c: [2x2 double]Z =1.0000 2.00003.0000 3.0000c.Tc.bc.cans =旋转矩阵0.3162 0.94870.9487 -0.3162a原创 2021-03-12 16:09:56 · 332 阅读 · 0 评论 -
两个点集的距离,SVD的实施方法
A = X0’ * Y0;[L, D, M] = svd(A);T = M * L’;if isempty(doReflection) % ‘best’% Let the data decide if a reflection is needed.elsehaveReflection = (det(T) < 0);% If we don’t have what was asked for …if (doReflection ~= haveReflection)% … then eit原创 2021-03-12 15:01:38 · 288 阅读 · 0 评论 -
normrow行范数,matlab
function [ B ] = normrow( A )% NORMROW Compute l2 row vector norms%% B = normrow( A )%% Input:% A #A by D list of row vectors of dimension D% Output:% B #A list of norms of row vectors in A%% Copyright 2011, Alec Jacobson ([email protected].原创 2021-03-09 17:14:57 · 403 阅读 · 0 评论 -
random的用法,matlab,正态泊松均匀分布
泊松分布K=[1,2,3,4]random(‘poisson’,K )得到K = 1 2 3 4ans = 2 0 2 2取了四个数,为什么是四个?K=[1,2,3,4]random(‘poisson’,1,K )ans(:,:,1,1) = 2 1ans(:,:,2,1) = 2 1ans(:,:,3,1) = 0 1ans(:,:,1,2) = 1 2ans(:,:,2,2)原创 2021-03-01 14:50:50 · 1273 阅读 · 0 评论 -
laplace形变用于数学系统构建,图像变形算法,Matlab
clear allload seamountN = 6;v=[1 0.5;0.78023 0.44678;0.081126 0.30635;0.6 0.2;0.48679 0.81763;0.2586 0.61483]tri= delaunay(v(:,1),v(:,2))z=zeros(N,1);% Delaunay triangulationfigure;subplot(2,1,1);triplot(tri,v(:,1原创 2021-01-04 17:27:49 · 188 阅读 · 0 评论 -
拉普拉斯坐标(微分坐标)怎么求,laplace算法图像变形,matlab
clear allload seamountN = 8;x = rand(N,1);y = rand(N,1);z=zeros(N,1);% Delaunay triangulationtri = delaunay(x,y)DT = delaunayTriangulation(x,y)% Calculate adjacency matrixAdjMat = false(N);for kk = 1:size(tri,1)AdjMat(tri(kk,1), tri(kk,2)) = tr原创 2021-01-04 16:14:29 · 655 阅读 · 0 评论 -
Delaunay triangulation与delaunay有什么不同,前者是类,后者是矩阵,matlab
load seamountN = 8;x = rand(N,1);y = rand(N,1);z=zeros(N,1);% Delaunay triangulationtri = delaunay(x,y)DT = delaunayTriangulation(x,y)tri = 1 3 8 1 4 3 1 2 6 2 5 7 6 2 7 1 8 2 3 4 8 8原创 2021-01-04 15:55:13 · 325 阅读 · 0 评论 -
matlab用适用于三维的trisurf画二维三角剖分,让z=0
load seamountN = 8;x = rand(N,1);y = rand(N,1);z=zeros(N,1);% Delaunay triangulationtri = delaunay(x,y);% DT = delaunayTriangulation(x,y)trisurf(tri,x,y,z)原创 2021-01-04 14:58:18 · 976 阅读 · 0 评论 -
matlab二维点集的德洛内三角化的邻接矩阵,triplot画三角网格
N = 8;x = rand(N,1);y = rand(N,1);% Delaunay triangulationtri = delaunay(x,y);DT = delaunayTriangulation(x,y)% Calculate adjacency matrixAdjMat = false(N);for kk = 1:size(tri,1)AdjMat(tri(kk,1), tri(kk,2)) = true;AdjMat(tri(kk,2), tri(kk,3)) = tr原创 2021-01-04 14:45:02 · 670 阅读 · 0 评论 -
matlab程序的函数太多的管理技巧
matlab程序的函数太多了,一般点检一下之后,每次上班都像点检消火栓一样点检一下之后,可以避免无所事事的发呆。一般放了一个长假过后就是这种感觉。每个matlab的函数是干嘛都不知道了。...原创 2020-12-30 16:09:24 · 483 阅读 · 0 评论 -
Laplace图像变形的余切矩阵的效果,Matlab
clear all;mesh_source = ‘C:\Users\li\Desktop\101028\101028_l\T_0.obj’;[v,F] = load_mesh(mesh_source);cotmatrix(v,F)结果:非对角矩阵。对角元+其他零散的元素(5158,5227) 0.20947(5159,5227) 1.06(5160,5227) 0.45512(5226,5227) 0.93866(5227,5227)原创 2020-12-22 16:40:43 · 350 阅读 · 0 评论 -
matlab的size和sum对行列求和的视觉设计记忆
原创 2020-12-21 15:27:34 · 155 阅读 · 0 评论 -
mass矩阵入门,matlab
clear all;mesh_source = ‘C:\Users\lixiaohu\Desktop\101028\101028_l\TOOTH_0.obj’;[v,F] = load_mesh(mesh_source);massmatrix(v,F,‘barycentric’)(4592,4592) 0.033451(4593,4593) 0.018297(4594,4594) 0.059208(4595,4595) 0.126(4596,4596)原创 2020-12-18 17:24:48 · 1324 阅读 · 2 评论 -
matlab三维对称矩阵高速计算求逆矩阵,先用符号验证一遍。
syms a b c d e f;Ia = (d.*f-e.^2)Ib = (c.*e-b.*f)Id =(a.*f-c.^2)Ic= (b.*e-c.*d)Ie=(b.*c-a.*e)If=(a.*d-b.^2)[Ia,Ib,Ic;Ib,Id,Ie;Ic,Ie,If]expand([Ia,Ib,Ic;Ib,Id,Ie;Ic,Ie,If][a ,b,c;b,d,e;c,e f])/ (- fb^2 + 2bce - dc^2 - ae^2 + ad*f)原创 2020-12-09 16:19:23 · 730 阅读 · 0 评论 -
移动最小二乘MLSD2DTransform函数的结构,Matlab
原创 2020-12-08 17:35:07 · 271 阅读 · 0 评论 -
移动最小二乘法MLSD2D的数据预先处理的函数PrecomputeAffine的数学逻辑,matlab
function data = PrecomputeAffine(p,v,w)Pstar = PrecomputeWCentroids(p,w);M1 = v - Pstar;a = zeros(1,size(Pstar,2));b = a;d = a;Phat = cell(1,size(p,2));for i=1:size(p,2)Phat{i} = repmat(p(:,i),[1,size(Pstar,2)])-Pstar; a = a + w(i,:).*Phat{i}(1原创 2020-12-07 14:30:17 · 161 阅读 · 0 评论 -
图像变形MLSD2DTransform---matlab自带的函数,其中内嵌的子函数PrecomputeAffine预先计算了权重,对三维数据不可!要改造
clear allsyms a1 a2 a3 a4 b1 b2 b3 b4 d1 d2 d3 d4 M1;a=[a1,a2,a3,a4];b=[b1,b2,b3,b4];d=[d1,d2,d3,d4];det = a.*d - b.^2//det会是一个向量,每个元都是a1d1-b1b1这样类似的元。Ia = d./detIb = -b./detId = a./detF1 = [sum(M1.[Ia;Ib],1);sum(M1.[Ib;Id],1)]运行结果---------------原创 2020-12-03 17:35:20 · 176 阅读 · 0 评论 -
图像变形MLSD2DTransform---matlab自带的函数,其中内嵌的子函数PrecomputeWeights预先计算了权重,对三维数据可以使用
clear all;mesh_source = ‘C:\Users\lixiaohu\Desktop\101028\101028_l\TOOTH_0.obj’;[v,F] = load_mesh(mesh_source);v=v(1:16,:)v=v’size(v,1)p = [-1.0843 -1.2803 -1.5304 -1.4777 ;-3.1908 -3.1335 -3.0674 -3.0253;-3.1908原创 2020-12-03 16:46:59 · 237 阅读 · 1 评论 -
图像变形MLSD2DTransform---matlab自带的函数,其中内嵌的子函数PrecomputeWeights预先计算了权重,对三维数据可以使用
function w = PrecomputeWeights(p,v,a)a=2;w = zeros(size(p,2),size(v,2));for i=1:size(p,2)norms_2 = sum((repmat(p(:,i),[1,size(v,2)])-v).^2,1);w(i,:) = 1./(norms_2.^a+1e-8);end对三维数据照样使用clear all;mesh_source = ‘C:\Users\lixiaohu\Desktop\101028\10102原创 2020-12-03 15:26:15 · 206 阅读 · 0 评论 -
MLSD2DTransform---matlab自带的函数,其中内嵌的子函数PrecomputeWeights预先计算了权重,怎么计算的呢?
function w = PrecomputeWeights(p,v,a)a=2;w = zeros(size(p,2),size(v,2));for i=1:size(p,2)norms_2 = sum((repmat(p(:,i),[1,size(v,2)])-v).^2,1);w(i,:) = 1./(norms_2.^a+1e-8);end上述函数带到主函数中的结果:四个控制点,十五个平面上的点。每个点对应15个权,那么一共有4*15个权。clear all;mesh_sour原创 2020-12-03 14:52:49 · 147 阅读 · 0 评论 -
平面上两个点,旋转或平移靠近另外该平面两个点,靠的最近能有多近?解决方案matlab,主成分分析PCA入门2
syms x1 x2 y1 y2 m1 m2 n1 n2 t a b;m=[cos(t), -sin(t);sin(t), cos(t)]k=[x1,y1;x2,y2];kk=[m1,n1;m2,n2];f=k-m*kk-[a,b];ssd=sum(sum(f.*f))diff(ssd,a)diff(ssd,b)diff(ssd,t)solve([diff(ssd,a), diff(ssd,b), diff(ssd,t)],[a, b, t])本来写以上代码可以解决该问题的。但是分析一下原创 2020-12-02 16:33:17 · 123 阅读 · 0 评论 -
同一条两个点,移到该直线上另外两个点,尽量重合的解决方案是移多少?matlab求解,PCA入门,主成分分析入门
syms a b s x t;f=(b-a)^2+ (b+s-a)^2+ (a+t-b)^2+ (a+t-b-s)^2ff=subs(f,a,b-x)gg=collect(expand(ff),x)xx_no_order=solve(diff(gg,x),x)如果AB移动到CD,移动后不知道顺序谁对到谁,只有用AC、AD,BC,BD的平方和,就是上面解决方法。AB=[b,b+s].CD=[a,a+t].设b-a=x。x为多少,就能定出应该移动多少。如果知道A对C ,B对D,就是下面解决方案。原创 2020-12-02 15:50:41 · 101 阅读 · 0 评论 -
prod与factor复合,跟普通的因式分解一样,subs代换的使用,matlab
syms f2 f1 f3;fff =[ a2b1B^3 + a0a1a2BC^2 + a1b0C^3, 1/a2, 1/b1]subs(fff(1),[B,C],[f2/f3,-f1/f3])ans =(a2b1f23)/f33 - (a1b0f13)/f33 + (a0a1a2*f12*f2)/f33u=f3^3*subs(fff(1),[B,C],[f2/f3,-f1/f3])u =f33*((a2*b1*f23)/f3^3 - (a1b0f13)/f33 + (a0a1a2*原创 2020-12-01 14:51:52 · 155 阅读 · 0 评论 -
bvh文件读取之rawdata,开源linear blend skinning线性蒙皮算法的matlab代码中的loadbvh函数解释
clear allfname=‘HandBase.bvh’if ~strncmpi(fliplr(fname),‘hvb.’,4)fname = [fname,’.bvh’];endfid = fopen(fname);C = textscan(fid,’%s’);fclose(fid);C = C{1};skeleton = [];ii = 1;nn = 0;brace_count = 1;while ~strcmp( C{ii} , ‘MOTION’ )ii = ii+1;转载 2020-11-27 18:02:33 · 440 阅读 · 0 评论 -
对一个bvh文件用matlab的fopen和textsscan读取的结果,还蛮直观的
fname=‘HandBase.bvh’fid = fopen(fname);C = textscan(fid,’%s’)运行结果C =1×1 cell 数组{18096×1 cell}此类型的变量不支持使用点进行索引。C{1}ans ='HIERARCHY'C{2}ans ='ROOT'C{20}ans ='OFFSET'C{200}ans ='-1.338019'...原创 2020-11-27 17:42:10 · 266 阅读 · 0 评论 -
BVH文件的每个部分都指的是什么,深入到细节解读,线性混合蒙皮算法
BVH文件包含两部分,头部部分和数据部分,头部部分描述了骨架的层次关系和初始姿势,数据部分包含了动作(motion)的数据.HIERARCHYROOT handbone{OFFSET -1.355774 -0.224670 0.000001CHANNELS 6 Xposition Yposition Zposition Xrotation Yrotation ZrotationJOINT indexlower{OFFSET -27.610151 27.215357 10.031754CHA原创 2020-11-27 16:59:18 · 546 阅读 · 0 评论 -
线性混合蒙皮算法demo的第二部分的注解,matlab的exchangefile里面找到的开源代码
clear allfaces = csvread(‘handfaces.txt’);V0 = csvread(‘handverts.txt’);V0=V0’;N = size(V0,1);weights = csvread(‘handweights.txt’)sk = loadbvh(‘HandBase.bvh’)wmap = [1 2 3 4 0 15 16 17 0 5 6 7 0 8 9 10 0 11 12 13 0 14 0];wzero = wmap==0;W = sparse转载 2020-11-27 16:10:24 · 242 阅读 · 0 评论 -
线性混合蒙皮算法demo的第一部分的注解,matlab的exchangefile里面找到的开源代码
clear allfaces = csvread(‘handfaces.txt’);V0 = csvread(‘handverts.txt’);V0=V0’;N = size(V0,1);weights = csvread(‘handweights.txt’)sk = loadbvh(‘HandBase.bvh’)wmap = [1 2 3 4 0 15 16 17 0 5 6 7 0 8 9 10 0 11 12 13 0 14 0];wzero = wmap==0;W = sparse转载 2020-11-27 16:03:37 · 324 阅读 · 0 评论 -
怎么批量删除matlab或其他程序代码的注释,怎么批量删除程序的空行
批量删除matlab注释:(注释符是%)1.把代码拷到visual studio的一个txt文件里。(用vs code,或sublime也可以代替visual studio)2.用ctrl+H可以调出文本替换的对话框3.选择搜索的模式:正则表达式4. 搜索框输入:%.*\n5 点击全部替换批量删除任意程序代码空行:1.把代码拷到visual studio的一个txt文件里。(用vs code,或sublime也可以代替visual studio)2.用ctrl+H可以调出文本替换的对话框原创 2020-11-24 16:22:56 · 1809 阅读 · 0 评论 -
matlab怎么保存运行结果,供重复利用。(结果数据过大重现耗时时往往用这个技巧)
用save命令即可,save(‘你想要的文件名.mat’,结果),用load提取。ffff=factor(fff);for i=1:length(ffff)ffff(i)endff1=subs(fff,[s,t,b,c,d,e],[a0a1a22*a33a44*b1,a0*a1*a22a33*a44b1^2,B ,C/(a3a4),D/(a2a3a4a4b1),E/(a2a32*a43b1)]);save(‘poly5.mat’,‘ffff’)re=load(‘poly5.mat’)re.f原创 2020-11-24 16:01:33 · 2557 阅读 · 0 评论 -
matlab系数带符号的多项式相除的余数和商,多元多项式除法,用polynomialReduce
syms x s t;polynomialReduce(x^100 -5sx^3 +2sx+t,[x,s,t] ),x)原创 2020-11-24 15:35:20 · 2045 阅读 · 1 评论 -
多项式的判别式,Matlab
用结式代替计算,matlab没有判别式命令clear allsyms s t x w;f= x^3+s*x+t;diff(f,x)ans =3*x^2 + sresultant(f,diff(f,x))ans =4s^3 + 27t^2原创 2020-11-24 14:09:17 · 835 阅读 · 0 评论 -
批量定义方程组,用for循环,方程的数组建立,matlab,for循环也可批量定义函数
基于高斯四点插值公式的上述背景。我们定义了函数。进行积分。以下程序成功运行中有四个坑,第一个@(x)定义函数时,里面的运算一定要用.*之类的。一定不能掉点。第二批量定义方程组,用for循环,方程数组建立第三,用vpa估计近似值。第四,方程组输出结果为结构体。syms x y ;for i=0:1:3eq(i+1)=a*x^i+b*y^i-integral(@(x)x.^i,-1,1)ends=solve(eq,x,y,a,b)s.xvpa(s.x)运行结果:s =包含以下字段的.原创 2020-11-23 15:16:55 · 1872 阅读 · 0 评论 -
matlab将数学公式转化成latex格式输出(只对符号计算凑效),用latex()函数
syms a b clatex(a/b)ans ='\frac{a}{b}'latex(sqrt©/a+b)ans ='b+\frac{\sqrt{c}}{a}'原创 2020-11-23 14:13:55 · 1484 阅读 · 0 评论