Very simple code of adding two matrices horizontally retyrns an error using horzcat, dimensions of arrays being concatenated are not consistent. the error is on line (theta = [theta(:,1:6),zeros(length(theta),1)];).
the excel file has a matrix of 4x6, which i check with size theta even.
the code is:
clear all
clc
% Input:
tmp = importdata ('exp.xlsx');
theta = tmp.data;
theta = [theta(:,1:6),zeros(length(theta),1)];
% Calcu
theta (:,7) = theta (:,2).*theta(:,3);
%output
file_name = 'total.txt';
fid = fopen(file_name,'w');
fprintf(fid,'This file is written by matlab code.\n\n');
fprintf(fid,'This code will calculate the total.\n\n');
for i = 1:length(theta)
fprintf(fid,'The total of %d with age %f and exp %f is %f.\n',theta(i,1),theta(i,2),theta(i,3),theta(i,4));
end
fprintf(fid,'\nENDFILE');
fclose (fid);

 채택된 답변

VBBV
VBBV 2023년 6월 14일
편집: VBBV 2023년 6월 14일

0 개 추천

theta = [theta(:,1:6),zeros(size(theta,1),1)];

댓글 수: 4

VBBV
VBBV 2023년 6월 14일
Preallocate the matrix theta with correct number of zeros
rida
rida 2023년 6월 14일
THANKS, ERROR RESOLVED. what exactly happened here? it worked when i only had 3 columns
The length function on a non-empty array returns the size in the longest dimension of your array. That's not necessarily the number of rows.
A = ones(3, 6);
length(A)
ans = 6
Calling size with 1 as the dimension input will give you the number of rows in the array.
size(A, 1)
ans = 3
rida
rida 2023년 6월 14일
thanks, this was very helpful. much thanks

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Satwik
Satwik 2023년 6월 14일

0 개 추천

You can make the following change if your goal is to concatenate.
tmp = zeros(4,6);
theta = tmp;
theta = [theta(:,1:6),zeros(size(theta,1),1)]
theta = 4×7
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

제품

릴리스

R2019a

태그

질문:

2023년 6월 14일

댓글:

2023년 6월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by