这是函数的帮助

2视图(30天)
主鼓励性产业
主鼓励性产业 2020年11月5日
编辑: 主鼓励性产业2020年11月17日
j = 1:500000
= V (:, j);
薇尔(j) = SD (a, QuImage);
结束
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年11月5日
对代码进行向量化,你vectorize SD——你不显示的代码。

登录置评。

答案(2)

Sindar
Sindar 2020年11月5日
这是否可以SD矢量化是一个问题。有可能它作用于直接列:
Val = SD (VImage QuImage);
或者你需要创建一个变体:
Val = SD_col (VImage QuImage);
%或添加一个参数指定维度
Val = SD (VImage QuImage 2);

沃尔特·罗伯森
沃尔特·罗伯森 2020年11月5日
Val =总和((VImage - QuImage)。^ 2, 1)”;
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年11月5日
不,SD函数使用金额(X(:)。^ 2),只能返回标量值。你需要每列一个值。与vectorzing SD功能不兼容。
你可以很容易地使SD功能也做了同样的事情我的代码:
函数(sd, X) = sd (I1、I2);
X = I1 - I2;
sd = (x ^ 2, 1)总和。';
结束
然后你会
Val = SD (VImage QuImage);
我发布的代码使用“隐式扩张”,在R2016b补充道。
你VImage 500 x 50是一个数组。你的QuImage 500 x 1数组。你想减去QuImage VImage每一列,可以如果你复制QuImage 50列宽,
VImage repmat (QuImage 1大小(VImage, 2))
然后你会减去500 x 50 - 500 x 500 x 50的结果。然后你可以广场每个条目使用。^ 2获得500 x 50的结果。然后你添加的第一个维度,结果1 x 50——沿着每一列平方和应用。
碰巧MATLAB建立了检测中如果你有arithemetic大小不同的两个矩阵之间的操作,对的大小是不同的,其中一个长度是1。所以在500 x 50 - 500 x 1例,他们不同意,50比1,第二个尺寸1。在这种情况下,MATLAB与repmat似它复制数据自动行为……除了在大多数情况下,它不需要复制数据,操纵它正在与内部给虚拟复制发生的结果。像似做副本的指针,而不是复制的数据。

登录置评。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!