フィルターのクリア

How to Fix "Warning: Colon operands must be real scalars" Warning

866 ビュー (過去 30 日間)
Burhan Burak
Burhan Burak 2024 年 4 月 7 日
編集済み: Ryan Lamb 2024 年 6 月 12 日
When I run the code below, it works as I wanted, but I get a warning. I tried different things to fix it, but of no avail. How can I refactor my code so that I will not face any related issue as the warning states if I can?
ply_nums_range = [4, 8, 16, 32, 64];
x = rand(1, 2);
data = cartesian_product({b_range, ...
N_xx_range, ...
N_yy_range, ...
N_xy_range, ...
ang_range});
for e = ply_nums_range
ply_nums = e;
for i = 1:length(data)
b = data(i, 1);
N_xx = data(i, 2);
N_yy = data(i, 3);
N_xy = data(i, 4);
ang = data(i, 5);
iteration = [a, ...
b, ...
N_xx, ...
N_yy, ...
N_xy, ...
[PLY_ANGS(ang, x), flip(PLY_ANGS(ang, x))]];
thetas = cell(1, ply_nums);
for j = 1:ply_nums
thetas{j} = sprintf("theta_%d", j);
end
variable_names = ["a", "b", "N_xx", "N_yy", "N_xy", thetas];
table_data = array2table(iteration, ...
'VariableNames', ...
variable_names);
sheet_name = sprintf("%d_ply_case", e);
writetable(table_data, ...
"design-cases/case.xlsx", ...
'WriteMode', 'Append', ...
'Sheet', sheet_name);
end
end
Console output:
Warning: Colon operands must be real scalars. This warning will become an error in a future release.
> In matlab.io.spreadsheet.internal.write.writeXLSFile>getRangeToWrite (line 575)
In matlab.io.spreadsheet.internal.write.writeXLSFile (line 262)
In writetable (line 426)
In test_case (line 72)
  2 件のコメント
Walter Roberson
Walter Roberson 2024 年 4 月 7 日
there is something odd about the way it is interpreting the sheet parameter. Please verify that sheet_name contains a valid character vector. Experiment with moving the numeric part of the character vector to the end.
Burhan Burak
Burhan Burak 2024 年 4 月 8 日
I tried this like "ply_%d" for the sheet name. It does not work either.

サインインしてコメントする。

回答 (4 件)

Jakob Weis
Jakob Weis 2024 年 4 月 23 日
In my case the warning was triggered because the colon operands were indexed with for-loop indices which I accidentally parsed as a column rather than a row vector.
for_indices = (1:10)'; % Column vector parsed as for-indices triggers warning.
X = 1:10;
Y = 101:110;
for i = for_indices
R = X(i):Y(1);
end
It doesn't look like this is the issue OP is facing but I thought I'd mention it in case somebody else comes across this thread.

Ryan Lamb
Ryan Lamb 2024 年 6 月 12 日
編集済み: Ryan Lamb 2024 年 6 月 12 日
I think the Warning is coming from the 'WriteMode' being set to 'Append'.
I get the same warning any time I append to a row greater than 10.

VBBV
VBBV 2024 年 4 月 7 日
for k = 1:numel(ply_nums_range)
ply_nums = ply_nums_range(k); %
for i = 1:length(data)
b = data(i, 1);
N_xx = data(i, 2);
N_yy = data(i, 3);
N_xy = data(i, 4);
ang = data(i, 5);
iteration = [a, ...
b, ...
N_xx, ...
N_yy, ...
N_xy, ...
[PLY_ANGS(ang, x), flip(PLY_ANGS(ang, x))]];
thetas = cell(1, ply_nums);
for j = 1:ply_nums % scalar limit
thetas{j} = sprintf("theta_%d", j);
end
variable_names = ["a", "b", "N_xx", "N_yy", "N_xy", thetas];
table_data = array2table(iteration, ...
'VariableNames', ...
variable_names);
sheet_name = sprintf("%d_ply_case", ply_nums);
writetable(table_data, ...
"design-cases/case.xlsx", ...
'WriteMode', 'Append', ...
'Sheet', sheet_name);
end
end
  9 件のコメント
VBBV
VBBV 2024 年 4 月 8 日
Though sheetname has no issues, but it may also be the cause, try to give sheetname that begins with character instead of number
sheet_name = sprintf("ply_case_%d", 4)
sheet_name = "ply_case_4"
Burhan Burak
Burhan Burak 2024 年 4 月 8 日
編集済み: Burhan Burak 2024 年 4 月 8 日
Yes, "design-case" is an existing folder in the current folder along with the file I run so backward slash use in designating relative file path gives me an error. Also I tried the alternative sheet name scheme as you and the other user pointed out, and still get the same warning. Additionally, it is worth mentioning something I noticed in the created case.xlsx file when I look over it. I attach a related image of it below. After some column it does not write in values as expected.

サインインしてコメントする。


Steven Lord
Steven Lord 2024 年 4 月 9 日
If you have a small case with which you can reproduce this behavior, could you please send it to Technical Support directly using this link? Or could you attach to this Answers post (or send it to Support) a small MAT-file with a representative table_data table array that reproduces this behavior when you run this writetable command? I'd like for us to investigate why writetable is issuing this warning message.
writetable(table_data, ...
"design-cases/case.xlsx", ...
'WriteMode', 'Append', ...
'Sheet', sheet_name);
  1 件のコメント
Burhan Burak
Burhan Burak 2024 年 4 月 9 日
I edited said .m file for minimally reproducible example of the warning, and you can find it appended to this message. I hope this helps.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDebugging and Analysis についてさらに検索

製品


リリース

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by