Ошибка индексации скобок при использовании функции MATLAB cell2mat () - PullRequest
0 голосов
/ 08 ноября 2018

Я не могу понять, почему я внезапно получаю сообщение об ошибке, хотя я использовал cell2mat таким же образом для предыдущих кодов. Ошибка читает

Brace indexing is not supported for variables of this type.
Error in cell2mat
cellclass = class(c{1});

И соответствующий код

clear all;
close all;
clc;

parta = xlsread('C:\Users\Zahin\Desktop\Fall 2018\MEC 516\Lab 9\Data.xlsx',1,'A3:R15');
partb = xlsread('C:\Users\Zahin\Desktop\Fall 2018\MEC 516\Lab 9\Data.xlsx',2,'A3:K11');

a_rg = cell2mat(parta(:,1));

Моя цель - превратить эти ячейки в векторы столбцов, чтобы я мог использовать функцию заговора. Когда я делаю что-то вроде:

plot(parta(:,1),parta(:,2));

MATLAB создаст линейный график, который соединяет каждую точку в порядке индекса элемента массива (то есть (x1, y1) с (x2, y2), даже если (x3, y3) будет ближе к (x1, y1) ) в линейной посадке). Я не могу понять, почему это происходит, но я предполагаю, что это связано с тем, что я не могу преобразовать массивы таблиц.

1 Ответ

0 голосов
/ 08 ноября 2018

Если вы используете xlsread только с 1 возвращаемым аргументом как:

num = xlsread(filename, sheet);,

возвращаемое значение будет числовой матрицей, поэтому вы не можете преобразовать числовую матрицу с помощью функции cell2mat. То, что вы, вероятно, использовали раньше:

[num, txt, raw] = xlsread(filename, sheet);

, который возвращает массивы ячеек для второго и третьего возвращаемого значения, поскольку txt будет читать все ячейки, которые содержат только текстовые данные, и помещать их в матрицу ячеек, а raw будет читать все данные и снова помещать их в ячейку матрица, смешивание чисел и символьных массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...