查看: 667|回复: 3|关注: 0
打印 上一主题 下一主题

易快乐扑克3开奖结果: [已解决] MATLAB自带的DTW函数使用求助

[复制链接]

新手

14 麦片

财富积分


快乐扑克3如何跟对子 www.vqxik.tw 050


11

主题

30

帖子

1

最佳答案
在使用MATLAB自带的dtw函数时,如果矩阵是一维矩阵时,a=[1,2,3,4]; b=[4,4,4,5]; 则使用dtw(a,b)时,没问题。 ans=7;


但是如果矩阵是二维矩阵时,a=[1,2,3,4;5,6,7,8]; b=[2,2,2,2;3,4,5,6]; 使用dtw(a,b)时,ans=8.8929;
这里我想要的是,输入为二维矩阵时,输出的也要是两个矩阵之间每行的距离差值,所以这里我想要的是 ans 是两个值,每个值对应一行的输入。

论坛优秀回答者

中级

1327 麦片

财富积分


5001500


0

主题

1828

帖子

269

最佳答案
  • 关注者: 50
2#
发表于 2019-8-31 10:03:09 | 只看该作者
dtw函数返回最小值呢!如果想要那样做,只能采用for循环了呢!
for ii=1:size(a,1)
c(ii,:)=dtw(a(ii,:),b(ii,:));
end

新手

14 麦片

财富积分


050


11

主题

30

帖子

1

最佳答案
3#
 楼主| 发表于 2019-9-2 19:17:07 | 只看该作者
WarnerChang 发表于 2019-8-31 10:03
dtw函数返回最小值呢!如果想要那样做,只能采用for循环了呢!
for ii=1:size(a,1)
c(ii,=dtw(a(ii,,b( ...

for循环应该可以,没什么问题。
但是我这里可能不能用for循环来实现,
因为我想在matlab里面实现dtw函数和knn函数结合起来,实现分类,
[email protected](x,y)dtw(x,y); 这里只能返回一个值,所以 代码老是报错,我想求助一下有没有好的方法不用for循环来实现,其实是为了解决这个问题。

clear all;
clc;

load fisheriris
X = meas;    % Predictors
Y = species; % Response

[email protected](x,y)dtw(x,y);

k = 3;
w = [0.3; 0.3; 0.2; 0.2];


KNNMdl = fitcknn(X,Y,'Distance',@(x,y)dtwDist(x,y),...
    'NumNeighbors',k,'Standardize',1);

论坛优秀回答者

中级

1327 麦片

财富积分


5001500


0

主题

1828

帖子

269

最佳答案
  • 关注者: 50
4#
发表于 2019-9-2 19:51:27 | 只看该作者 |此回复为最佳答案
马一涵 发表于 2019-9-2 19:17
for循环应该可以,没什么问题。
但是我这里可能不能用for循环来实现,
因为我想在matlab里面实现dtw函数 ...

那你自己编个函数不就好了吗?!
比如
function dtwDist=DTW(a,b)

for ii=1:size(a,1)
dtwDist(ii,:)=dtw(a(ii,:),b(ii,:));
end

end
然后你用DTW函数就好了呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 快乐扑克3如何跟对子 返回列表