如何在 Matlab 中减去两个单元格数组

How do I subtract two arrays of cells in Matlab

我正在尝试使用 Matlab 从 Excel table 中获取一些变量和数字。

下面名为 "diffZ_trial1-4" 的变量应根据两列("start" 和 "finish" 之间)的差值计算。但是我收到错误:

Undefined operator '-' for input arguments of type" 'cell'.

而且我在某处读到这可能与我得到 {} 输出而不是 [] 这一事实有关,也许我需要使用 cell2mat 或以某种方式转换输出。但我一定是做错了,因为它没有用!

问题:如何计算下面两列之间的差异?

clear all, close all

[num,txt,raw] = xlsread('test.xlsx');



start = find(strcmp(raw,'HNO'));

finish = find(strcmp(raw,'End Trial: '));

%%% TIMELINE EACH TRIAL

time_trial1 = raw(start(1):finish(1),8);
time_trial2 = raw(start(2):finish(2),8);
time_trial3 = raw(start(3):finish(3),8);
time_trial4 = raw(start(4):finish(4),8);

%%%MOVEMENT EACH TRIAL

diffZ_trial1 = raw(start(1):finish(1),17)-raw(start(1):finish(1),11);
diffZ_trial2 = raw(start(2):finish(2),17)-raw(start(2):finish(2),11);
diffZ_trial3 = raw(start(3):finish(3),17)-raw(start(3):finish(3),11);
diffZ_trial4 = raw(start(4):finish(4),17)-raw(start(4):finish(4),11);

没错,raw 包含所有类型的数据,包括文本 (http://uk.mathworks.com/help/matlab/ref/xlsread.html#outputarg_raw)。您应该使用 num,它是一个数字矩阵。

或者,如果你有更新版本的Matlab,你可以尝试阅读table (https://uk.mathworks.com/help/matlab/ref/readtable.html),我认为这样更灵活。它从 excel 文件创建一个 table,其中包含文本和数字。