[英]Error using horzcat Dimensions of arrays being concatenated are not consistent. Matlab
[英]Debugging the error "Dimensions of arrays being concatenated are not consistent" in MATLAB
我有一個函數VanderPol()
應該提供矢量輸出,但它似乎不起作用。 它只有三行代碼,但我似乎無法找到錯誤。
功能是
function [output] = VanderPol(y, i)
output = [y(2,i); (1-y(1,i)^2)*y(2,i) -y(1,i)];
end
它被稱為
z = [1 2 3;
4 5 6];
VanderPol(z,1)
我收到一條錯誤消息,指出VanderPol(z,1)
有問題,但沒有提示原因。 確切的錯誤消息如下所示。 任何人都可以發現錯誤嗎?
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
這是一個位的邊緣殼體的:可以通過分離的元件或者通過逗號構建MATLAB陣列,
或一個空間 。 因此,以下方式都可以工作並給出相同的結果:
a = [1, 2, 3]
b = [1 2 3]
在構建矩陣時,其工作原理類似,並且行之間用分號或換行分隔,即,我們具有以下等效的可能性:
A = [1, 2, 3; 4, 5, 6]
B = [1 2 3; 4 5 6]
C = [1, 2, 3
4, 5, 6]
D = [1 2 3
4 5 6]
現在來看您的示例:數組如下:
[y(2,i); (1-y(1,i)^2)*y(2,i) -y(1,i)]
第一行包含一個元素y(2,i)
。 但是,由於這兩部分之間的空間,第二行被解釋為兩個元素: (1-y(1,i)^2)*y(2,i)
和-y(1,i)
。 即MATLAB認為您正在使用空格來分隔數組的兩個部分,如上面的b
所示。 它將輸入解釋如下:
[y(2,i); (1-y(1,i)^2)*y(2,i), -y(1,i)]
如果將代碼粘貼到MATLAB中,則會收到一個錯誤消息,提示不可能有一個數組,數組的第一行有1個元素,第二行有2個元素:
>> [y(2,i); (1-y(1,i)^2)*y(2,i) -y(1,i)]
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
要解決該問題,您必須告訴MATLAB第二行中只有一個元素,由減法(1-y(1,i)^2)*y(2,i) -y(1,i)
。 以下是一些方法:
output = [y(2,i); (1-y(1,i)^2)*y(2,i) - y(1,i)]; % spaces on both sides of -
output = [y(2,i); (1-y(1,i)^2)*y(2,i)-y(1,i)]; % no spaces around -
output = [y(2,i); ((1-y(1,i)^2)*y(2,i) -y(1,i))]; % parentheses around everything
SEI UN GRANDE MI HAI SVOLTATO LA SERATA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.