How to get value from this type of table?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi. I want to create a code which can take extract a value of Cv coeffiecient from excel table given below, if user gives the value of Z and Soil Profile type as a string i.e Sa?
For now, i can omit Sf soil profile type.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/285566/image.png)
Kind Regards,
Imran
댓글 수: 5
답변 (2개)
Cris LaPierre
2020년 4월 18일
Unless you have a lot of these to read in, it's going to be quicker to either
- recreate this table in a format that is easier to read in, or
- create a script that defines variables for each value.
SA_Z075 = 0.06;
SB_Z075 = 0.08;
...
SE_Z4 = 0.96;
댓글 수: 2
Cris LaPierre
2020년 4월 18일
편집: Cris LaPierre
2020년 4월 18일
The best way to try importing data is to use the Import Tool. This allows you to interactively adjust the import settings. When you have what you want, you can then generate code that you can then add to your own code.
I'm a little more comfortable coding things up myself, so I'd probably do something like this
filename = "Table 16-R.xlsx";
opts = detectImportOptions(filename,'ReadRowNames',true);
opts.VariableNames = ["Z0075", "Z015", "Z02", "Z03", "Z04"];
zTbl = readtable(filename,opts)
As a table with Soil Profile Type as the row name, I can then index the table use the Soil Profile Type and Seismic Zone Factor. Notice I am using curly braces to access the table value.
Z=zTbl{"SA","Z015"}
Here, the result is Z = 0.1200
Image Analyst
2020년 4월 18일
Try this. It works for all 5 cases, plus even works if the z is not one of the columns exactly.
fileName = fullfile(pwd, 'Table 16-R.xlsx');
[numbers, strings, raw] = xlsread(fileName)
lookUpTable = [0.075, .15, .2, .3, .4];
zInput = 0.075;
% Find the column that is closest to what the user input for Z:
[~, closestColumn] = min(abs(zInput - lookUpTable))
% Extract the SA for that column:
SA = numbers(1, closestColumn)
zInput = 0.15;
% Find the column that is closest to what the user input for Z:
[~, closestColumn] = min(abs(zInput - lookUpTable))
% Extract the SA for that column:
SA = numbers(1, closestColumn)
zInput = 0.2;
% Find the column that is closest to what the user input for Z:
[~, closestColumn] = min(abs(zInput - lookUpTable))
% Extract the SA for that column:
SA = numbers(1, closestColumn)
zInput = 0.3;
% Find the column that is closest to what the user input for Z:
[~, closestColumn] = min(abs(zInput - lookUpTable))
% Extract the SA for that column:
SA = numbers(1, closestColumn)
zInput = 0.4;
% Find the column that is closest to what the user input for Z:
[~, closestColumn] = min(abs(zInput - lookUpTable))
% Extract the SA for that column:
SA = numbers(1, closestColumn)
댓글 수: 3
Image Analyst
2020년 4월 21일
So why don't you call input() or inputdlg()?
zInput = input('Enter zInput : ');
참고 항목
카테고리
Help Center 및 File Exchange에서 String Parsing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!