How do I input a table column of values into a formula?

28 vues (au cours des 30 derniers jours)
Macy
Macy le 6 Fév 2023
Commenté : Macy le 6 Fév 2023
Hello, I am new to MatLab. Here is some simple code I would greatly appreciate some help on.
I am given an excel spreadsheet of dates and a value of length (radius). I want to convert the radius from inches to centimeters by multiplying it by 2.54. Then I want to calculate areas using the radius, one set as inches^2 and one set as centimeters^2. I don't know how to input values from the excel column into formulas on MatLab. I get the error that operator '*' is not supported for operands of type 'table', but when I forgo '*' I get another error stating "Invalid Experssion".
clc;
close all;
clear all;
% Prepare DataSet
Trans = readtable('Data1.xlsx');
radius = Trans(:,4)
radius = 5×1 table
radius ______ 12 14 13 12 11
%convert radius [inches] to radius [centimeters], 1 in = 2.54 cm
newradius = (radius)*2.54 %[cm]
Operator '*' is not supported for operands of type 'table'.
%Calculate area in cm^3 and in^3, area = pi*r^2
area_in = pi*(radius)^2 %[in^2]
area_cm = pi*(newradius)^2 %[cm^2]

Réponse acceptée

Chris
Chris le 6 Fév 2023
Modifié(e) : Chris le 6 Fév 2023
The problem, as pointed out by Stephen, is that you are accessing the table data with parantheses, which creates another table. Your code will work if you use curly braces:
radius = Trans{:,4};
Here are some other options:
% Read in as a matrix, losing the variable names
Trans = readmatrix('Data1.xlsx')
Trans = 5×4
9 7 2011 12 9 8 2011 14 9 9 2011 13 9 10 2011 12 9 11 2011 11
radiusincm = Trans(:,4)*2.54
radiusincm = 5×1
30.4800 35.5600 33.0200 30.4800 27.9400
% Read in as a table, add new columns
Trans = readtable('Data1.xlsx');
Trans.radiusincm = 2.54*Trans.radius
Trans = 5×5 table
month day year radius radiusincm _____ ___ ____ ______ __________ 9 7 2011 12 30.48 9 8 2011 14 35.56 9 9 2011 13 33.02 9 10 2011 12 30.48 9 11 2011 11 27.94
% Read in as a table, refer to variable names
Trans = readtable('Data1.xlsx');
radiusincm = 2.54*Trans.radius
radiusincm = 5×1
30.4800 35.5600 33.0200 30.4800 27.9400
  2 commentaires
Stephen23
Stephen23 le 6 Fév 2023
"The problem is that you created a table called "radius" with a variable name "radius.""
The actual problem is that the OP used the wrong kind of indexing. To access table content use curly braces, not parentheses. The difference is explained in the MATLAB documentation:
Macy
Macy le 6 Fév 2023
Thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by