【发布时间】:2013-02-11 12:24:05
【问题描述】:
我有一个文本文件D,有 98 行和 2 列。看起来像这样:
10 0.261344
11 0.456167
12 0.668595
2 0.481754
...等
我有另一个 17 行和 2 列的 excel 文件 M。
我想从第一行中减去所有行的值,然后从 2 中减去,等等。所以我得到这样的结果:
10-11 -0.194823
10-12 -0.407251
...等
换句话说,第一行与所有其余部分、第二行与所有其余部分之间的差异......不包括第一列与第二 M excel 文件第一列中的值相同的那些行。与 81 行相比,这完全不同。
我一直在尝试使用这个:
M = xlsread('...');
FSumID=fopen(D);
MatrixSub = loadD);
m = textscan(FSumID,'%d %f');
horzcat(m{:})
NewData = M(:,1)
D_size=size(D);
for i=1:D_size
if (ptvBodyDist(:,1)~=NewData(i))
%for calculating
DVec = bsxfun(@minus, ((m{i,2})), (m{i,2}));
%当我检查这个时它只给出一个循环全零(98,1)而我需要(((98-17)^2,1)。我需要改变,表达式的最后一部分得到我想要的但我被 bsxfun 困住了。我不知道如何做出正确的表达式来减去所有行。
我是 Matlab 的新手,任何帮助将不胜感激。另外,如果您可以建议一些手册或教程,除了 mathworks 帮助。非常感谢。
【问题讨论】:
-
备份一分钟,并确保此代码的第一部分按您预期的方式运行。拼写错误很难分辨,但例如
horzcat(m{:})的结果根本不会保存到任何变量中。接下来,编写一个以手动输入的矩阵开头的小测试用例,以便这里的人们可以使用一些东西来测试/演示您的问题的解决方案。
标签: matlab row subtraction bsxfun